RS485通信字符串數據接收處理的問題

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’。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章