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

作者: samxon    時(shí)間: 2024-5-7 11:20
標(biāo)題: MCU串口通信首字母亂碼問題

standby首字母亂碼,注釋掉下面的發(fā)送語句就不會(huì)亂碼,請(qǐng)問是什么問題。


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

        }        


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

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

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

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


作者: Graves    時(shí)間: 2024-5-8 11:00
samxon 發(fā)表于 2024-5-7 18:03

因?yàn)?49不在ASCII碼表內(nèi),編碼會(huì)把249和你首位的S合在一起當(dāng)成漢字來顯示,但是這漢字可能也沒有就亂碼了。第一次打印應(yīng)該是正常顯示standby的,解決辦法是要不就一起發(fā)送ascii碼,要不就一起發(fā)hex格式,一樣發(fā)一個(gè)顯示亂碼正常
作者: samxon    時(shí)間: 2024-5-8 12:44
qq475878026 發(fā)表于 2024-5-8 11:00
因?yàn)?49不在ASCII碼表內(nèi),編碼會(huì)把249和你首位的S合在一起當(dāng)成漢字來顯示,但是這漢字可能也沒有就亂碼了 ...

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

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

你的意思是換一個(gè)助手程序?




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