久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2658|回復(fù): 9
收起左側(cè)

解碼一個(gè)報(bào)文一般怎樣寫程序?

[復(fù)制鏈接]
ID:333483 發(fā)表于 2022-2-10 15:52 | 顯示全部樓層 |閱讀模式
比如一個(gè)報(bào)文的格式為:$AA,111,BB,222,<$$>

通過(guò)串口接收進(jìn)來(lái)存在數(shù)組buffer里,然后根據(jù)這個(gè)AA 111 BB 222的不同執(zhí)行不同的操作這樣的程序設(shè)計(jì)思路是什么?

我是這樣寫的
if((USART_RX2_BUF[0] == '$')&&(USART_RX2_BUF[1] == 'A')&&(USART_RX2_BUF[2] == 'A'))
{
   if((USART_RX2_BUF[4] == '1')&&(USART_RX2_BUF[1] == '1')&&(USART_RX2_BUF[1] == '1'))       
    {
       執(zhí)行的操作...
    }                       
}


這樣感覺效率很低,一般這種情況應(yīng)該怎么設(shè)計(jì)程序。
回復(fù)

使用道具 舉報(bào)

ID:311903 發(fā)表于 2022-2-10 16:02 | 顯示全部樓層
$AA,111,BB,222,<$$>  建議 將這幀報(bào)文拆開,頭部為 $ ,收到頭部后,接下來(lái)是  14個(gè)字節(jié)的數(shù)據(jù)部分(AA,111,BB,222,),再接下來(lái)是 尾部 <$$> ,這樣為正常的一幀,然后再處理數(shù)據(jù)部分的內(nèi)容
回復(fù)

使用道具 舉報(bào)

ID:313048 發(fā)表于 2022-2-10 16:06 | 顯示全部樓層
如果長(zhǎng)度格式都是一樣的,則可以直接用scanf進(jìn)行解析,前提是保證數(shù)據(jù)正確,不丟包等。
回復(fù)

使用道具 舉報(bào)

ID:333483 發(fā)表于 2022-2-10 17:02 | 顯示全部樓層
xws245925587 發(fā)表于 2022-2-10 16:02
$AA,111,BB,222,  建議 將這幀報(bào)文拆開,頭部為 $ ,收到頭部后,接下來(lái)是  14個(gè)字節(jié)的數(shù)據(jù)部分(AA,111,BB ...

比如我拆開了,吧AA111BB222存在了數(shù)組a里面,那我不是還是要比對(duì)if(a[0]==A&&a[1]==A)嗎?如果這個(gè)AA有很多種比如BB CC DD ...這樣我就要用很多個(gè)if,這樣感覺程序執(zhí)行的效率就很低,一般是不是不該這樣寫,這種情況應(yīng)該怎么設(shè)計(jì)結(jié)構(gòu)?
回復(fù)

使用道具 舉報(bào)

ID:879348 發(fā)表于 2022-2-10 17:27 | 顯示全部樓層
不用擔(dān)心效率,按照人腦思維習(xí)慣寫是最好的
回復(fù)

使用道具 舉報(bào)

ID:415064 發(fā)表于 2022-2-10 17:29 | 顯示全部樓層
memcmp
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2022-2-10 19:04 | 顯示全部樓層
只是書寫時(shí)看上去效率低,實(shí)際運(yùn)行效率可能并不低。你試試轉(zhuǎn)譯成匯編對(duì)比一下。
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-2-10 19:35 來(lái)自手機(jī) | 顯示全部樓層
很多人的通病,總以為看上去復(fù)雜,效率低,殊不知,往往看上去很簡(jiǎn)單的,其實(shí)反而效率是極低的。一個(gè)是程序員容易看,一個(gè)是單片機(jī)容易執(zhí)行,你更看重哪個(gè)?
回復(fù)

使用道具 舉報(bào)

ID:625730 發(fā)表于 2022-2-10 22:02 | 顯示全部樓層
a2966124 發(fā)表于 2022-2-10 17:02
比如我拆開了,吧AA111BB222存在了數(shù)組a里面,那我不是還是要比對(duì)if(a[0]==A&&a[1]==A)嗎?如果這個(gè)AA有 ...

首先報(bào)文要收全,然后再根據(jù)報(bào)文定義去解析,如果每一部分是多個(gè)字符的字符串,就先分解成字符串,然后再去比較,不一定要按一個(gè)個(gè)數(shù)組單元去比較,那樣比較費(fèi)神、費(fèi)眼。
回復(fù)

使用道具 舉報(bào)

ID:311903 發(fā)表于 2022-2-11 08:30 | 顯示全部樓層
a2966124 發(fā)表于 2022-2-10 17:02
比如我拆開了,吧AA111BB222存在了數(shù)組a里面,那我不是還是要比對(duì)if(a[0]==A&&a[1]==A)嗎?如果這個(gè)AA有 ...

如果是固定的,設(shè)計(jì)一個(gè)結(jié)構(gòu)體啊,例如,
struct _demo{
   char cmd_1[3];  //AA
   char data_1[4];  //111
   char cmd_2[3];  //BB
   char data_2[4];  //222
}
后面判斷字符串用 strcmp之類的標(biāo)準(zhǔn)函數(shù)就可以了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久精品免费观看 | 激情五月婷婷在线 | 91社区在线观看高清 | 成人在线影视 | 国产不卡一区 | 日韩一区三区 | 欧美一区二区成人 | 狠狠操电影 | 久久久精品网站 | 国产精品久久久久久久久久三级 | 97精品超碰一区二区三区 | 国产精品久久久久久模特 | 欧美性猛片aaaaaaa做受 | 国产精品欧美日韩 | 亚洲最新在线视频 | 五月天婷婷综合 | 成人av高清在线观看 | 波多野结衣在线观看一区二区三区 | 中文字幕在线播放第一页 | 一区二区国产在线 | 久久久久久久一区二区三区 | 无码国模国产在线观看 | 久久久久久久久久久91 | 亚洲毛片在线观看 | 国产精品日韩欧美一区二区三区 | 91成人在线| 婷婷成人在线 | 夜久久 | 欧美日韩a| 91精品国产综合久久婷婷香蕉 | 黄a网站 | 理论片87福利理论电影 | 成年人免费网站 | 免费一看一级毛片 | 午夜国产一级片 | 嫩草视频在线免费观看 | 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美日韩中文字幕 | 国产一级视频在线 | 久久这里只有精品首页 | 国产精品美女久久久久久免费 |