MODBUS協(xié)議ASCII模式串口通訊的實(shí)現(xiàn)(Arm2410,RS232/485)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
資源使用說明:2410+LINUX、UART(即RS-232串口)全雙工通信、RS-485半雙工通信
局部程序框圖及其設(shè)計(jì)說明:
調(diào)試記錄及調(diào)試結(jié)果:
MODBUS總結(jié):
MODBUS協(xié)議
對比:
ASCII模式:用8位表示一個(gè)由內(nèi)容字符轉(zhuǎn)化而來的實(shí)際數(shù)值,直觀;
RTU模式 :用4位表示一個(gè)由內(nèi)容字符轉(zhuǎn)化而來的實(shí)際數(shù)值,效率高。
其它編程注意點(diǎn)總結(jié):
1、分母或乘數(shù)為2的n次方的乘除法用移位運(yùn)算以提高效率,注意移位運(yùn)算符的優(yōu)先級(jí)比加減運(yùn)算符低,別忘了加括號(hào)先算移位的;
2、short兩個(gè)字節(jié),long四個(gè)字節(jié),int則與機(jī)器字長相關(guān)。
3、在使用多個(gè)輸出函數(shù)連續(xù)進(jìn)行多次輸出時(shí),有可能發(fā)現(xiàn)輸出錯(cuò)誤。因?yàn)橄乱粋€(gè)數(shù)據(jù)再上一個(gè)數(shù)據(jù)還沒輸出完畢,還在輸出緩沖區(qū)中時(shí),下一個(gè)printf就把另一個(gè)數(shù)據(jù)加入輸出緩沖區(qū),結(jié)果沖掉了原來的數(shù)據(jù),出現(xiàn)輸出錯(cuò)誤。 在 prinf();后加上fflush(stdout); 強(qiáng)制馬上輸出,避免錯(cuò)誤。
4、menset()用法: char arr[20]; memset(arr,'