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