標(biāo)題: 怎么樣在STM32串口通信里判斷串口收到的是不是OK,有什么方法能實(shí)現(xiàn)嗎 [打印本頁]

作者: Qiu'LJ    時(shí)間: 2020-3-9 20:04
標(biāo)題: 怎么樣在STM32串口通信里判斷串口收到的是不是OK,有什么方法能實(shí)現(xiàn)嗎
請(qǐng)問一下各位  怎么樣在STM32串口通信里判斷串口收到的是不是OK,有什么方法能實(shí)現(xiàn)嗎

在網(wǎng)上只找到這個(gè),試了好像沒有用
while(1)
{
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
{
RxBuffer1[RecLen1++]=USART_ReceiveData(USART1);   
while(RecLen1==100);
}

for(i=0;i<100;i++)
{
if((RxBuffer1[ i]=='O')&&(RxBuffer1[i+1]=='K'))
{GPIO_ResetBits(GPIO_LED,DS1_PIN);
Delay(0x3FFFFF);}}}
作者: csmyldl    時(shí)間: 2020-3-9 23:30
你這程序是接收100個(gè)字符,當(dāng)接收到100個(gè)字符時(shí)才進(jìn)行比較,判斷100個(gè)字符中是否存在'OK'
for(i=0;i<100;i++)
{
if((RxBuffer1[ i]=='O')&&(RxBuffer1[i+1]=='K'))
這一句的意思是必須RxBuffer1數(shù)組中有一個(gè)'OK'才滿足條件
作者: new_hand    時(shí)間: 2020-3-10 09:54
收到數(shù)據(jù)后,可以通過strstr(const char *s1,const char *s2)函數(shù)找到“OK”字符串的位置,返回0,則說明接收到的數(shù)據(jù)中沒有“OK”字符串
作者: huangzongwu    時(shí)間: 2020-3-10 11:05
你這里是需要收到100個(gè)字節(jié)才會(huì)跳出去的,可以按照自己的邏輯處理緩存長度
作者: Qiu'LJ    時(shí)間: 2020-3-10 12:22
csmyldl 發(fā)表于 2020-3-9 23:30
你這程序是接收100個(gè)字符,當(dāng)接收到100個(gè)字符時(shí)才進(jìn)行比較,判斷100個(gè)字符中是否存在'OK'
for(i=0;i

那是不是如果我只要判斷是否存在OK 只要把for的改成
for(i=0;i<2;i++)
這樣然后等到接收到2個(gè)字符的時(shí)候進(jìn)行判斷是嗎
作者: Qiu'LJ    時(shí)間: 2020-3-10 12:25
new_hand 發(fā)表于 2020-3-10 09:54
收到數(shù)據(jù)后,可以通過strstr(const char *s1,const char *s2)函數(shù)找到“OK”字符串的位置,返回0,則說明接 ...

好  謝謝你 我去試試看
作者: 小炒肉111    時(shí)間: 2020-3-15 00:30
你好,判斷是否是OK,問題解決了嗎?怎么解決的?
作者: Qiu'LJ    時(shí)間: 2020-3-21 14:26
小炒肉111 發(fā)表于 2020-3-15 00:30
你好,判斷是否是OK,問題解決了嗎?怎么解決的?

還沒有  換了一個(gè)方向..
作者: DSFGSF    時(shí)間: 2021-4-12 11:50
請(qǐng)問樓主你解決了嗎?我也遇到了這個(gè)問題,不知道該怎么去判斷。。。。
作者: cn_zhx    時(shí)間: 2021-4-12 13:51
字符串比較一下
作者: DSFGSF    時(shí)間: 2021-4-17 15:54
好吧我解決了,我用strstr函數(shù)比較出來了




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