RS485通信字符串數據接收處理的問題
前段時間用51單片機寫了一個步進電機的控制程序,想模仿一下雲臺的運行,但是在對通過485通信接收到上位機傳來的數據進行分析時,發生了一個比較智障的小插曲,所以特地把它記下來,時時警醒自己這個菜雞~~~
RS485通信程序參考了金沙灘工作室宋雪峯老師的《手把手教你單片機》中的例程。設置接收字節數爲8位,粗糙的從接收數組中提取數據給步進電機的各種狀態量進行初始化
void UartDrive()
{
unsigned char len;
unsigned char pdata buf[8];
if(flagFame)
{
flagFame=0;
recTimes=1;
len=UartRead(buf,sizeof(buf));
UartWrite(buf,len);
SFLAG=buf[0]-48;
recNum=buf[1]-48;
Speed_Levle=buf[2]-48;
}
}
其中如
Speed_Levle=buf[2]-48
將上位機發來的ASCALL碼值轉化對應的數值,這樣後面處理會匹配了。
if(recNum==0 || Speed_Levle==0);
當然,轉化爲16進制數會方便一點,或者用單引號,如 ‘1’。