亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: MCU串口通信首字母亂碼問題 [打印本頁]

作者: samxon    時間: 2024-5-7 11:20
標題: MCU串口通信首字母亂碼問題

standby首字母亂碼,注釋掉下面的發送語句就不會亂碼,請問是什么問題。


        while(1)
        {
        
                set1=249;                        
                SendString("standby");
                delay(2000);
                        
                SendByte(set1);   //注釋這行,就沒有亂碼
                delay(5000);

        }        


作者: Hephaestus    時間: 2024-5-7 14:20
SendString()函數有bug。
作者: yaosongjin    時間: 2024-5-7 15:36
題主可試下把249改成48,249沒在ASCII碼范圍內
作者: samxon    時間: 2024-5-7 17:18
Hephaestus 發表于 2024-5-7 14:20
SendString()函數有bug。

void SendByte(BYTE dat)
{
        SBUF=dat;
        while(!TI);
        TI=0;
}

void SendString(unsigned char *str)
{
        while(*str!='\0')
        {
                _nop_();
                SendByte(*str);
                str++;       
        }
}
作者: samxon    時間: 2024-5-7 17:28
yaosongjin 發表于 2024-5-7 15:36
題主可試下把249改成48,249沒在ASCII碼范圍內

改成48可以,請問有什么辦法解決呢
作者: samxon    時間: 2024-5-7 18:03


作者: Graves    時間: 2024-5-8 11:00
samxon 發表于 2024-5-7 18:03

因為249不在ASCII碼表內,編碼會把249和你首位的S合在一起當成漢字來顯示,但是這漢字可能也沒有就亂碼了。第一次打印應該是正常顯示standby的,解決辦法是要不就一起發送ascii碼,要不就一起發hex格式,一樣發一個顯示亂碼正常
作者: samxon    時間: 2024-5-8 12:44
qq475878026 發表于 2024-5-8 11:00
因為249不在ASCII碼表內,編碼會把249和你首位的S合在一起當成漢字來顯示,但是這漢字可能也沒有就亂碼了 ...

確實如你所說,第一個字符串是沒有亂碼。 如果用hex格式,接收端需要用額外的函數把hex格式轉換成字符和10進制數嗎。還是說可以直接處理接收到的數。
作者: Graves    時間: 2024-5-8 13:47
samxon 發表于 2024-5-8 12:44
確實如你所說,第一個字符串是沒有亂碼。 如果用hex格式,接收端需要用額外的函數把hex格式轉換成字符和1 ...

你需要的應該是文本顯示,接收端是電腦,發送端是MCU,你需要在發送端加函數把set1轉成ascii就行。
就好像要acsii碼顯示249,就要發送三位byte,SendByte('2'),SendByte('4'),SendByte('9'),寫個這樣的轉換函數發送。
作者: Hephaestus    時間: 2024-5-8 20:49
你們都沒看樓主在6樓的圖的細節嗎?是串口助手出錯了,樓主換一個。
作者: samxon    時間: 2024-5-8 21:24
Hephaestus 發表于 2024-5-8 20:49
你們都沒看樓主在6樓的圖的細節嗎?是串口助手出錯了,樓主換一個。

你的意思是換一個助手程序?




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1