找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3995|回復(fù): 10
收起左側(cè)

怎么樣在STM32串口通信里判斷串口收到的是不是OK,有什么方法能實現(xiàn)嗎

[復(fù)制鏈接]
ID:588556 發(fā)表于 2020-3-9 20:04 | 顯示全部樓層 |閱讀模式
請問一下各位  怎么樣在STM32串口通信里判斷串口收到的是不是OK,有什么方法能實現(xiàn)嗎

在網(wǎng)上只找到這個,試了好像沒有用
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);}}}
回復(fù)

使用道具 舉報

ID:235200 發(fā)表于 2020-3-9 23:30 | 顯示全部樓層
你這程序是接收100個字符,當接收到100個字符時才進行比較,判斷100個字符中是否存在'OK'
for(i=0;i<100;i++)
{
if((RxBuffer1[ i]=='O')&&(RxBuffer1[i+1]=='K'))
這一句的意思是必須RxBuffer1數(shù)組中有一個'OK'才滿足條件
回復(fù)

使用道具 舉報

ID:246251 發(fā)表于 2020-3-10 09:54 | 顯示全部樓層
收到數(shù)據(jù)后,可以通過strstr(const char *s1,const char *s2)函數(shù)找到“OK”字符串的位置,返回0,則說明接收到的數(shù)據(jù)中沒有“OK”字符串
回復(fù)

使用道具 舉報

ID:496117 發(fā)表于 2020-3-10 11:05 | 顯示全部樓層
你這里是需要收到100個字節(jié)才會跳出去的,可以按照自己的邏輯處理緩存長度
回復(fù)

使用道具 舉報

ID:588556 發(fā)表于 2020-3-10 12:22 | 顯示全部樓層
csmyldl 發(fā)表于 2020-3-9 23:30
你這程序是接收100個字符,當接收到100個字符時才進行比較,判斷100個字符中是否存在'OK'
for(i=0;i

那是不是如果我只要判斷是否存在OK 只要把for的改成
for(i=0;i<2;i++)
這樣然后等到接收到2個字符的時候進行判斷是嗎
回復(fù)

使用道具 舉報

ID:588556 發(fā)表于 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,則說明接 ...

好  謝謝你 我去試試看
回復(fù)

使用道具 舉報

ID:708637 發(fā)表于 2020-3-15 00:30 | 顯示全部樓層
你好,判斷是否是OK,問題解決了嗎?怎么解決的?
回復(fù)

使用道具 舉報

ID:588556 發(fā)表于 2020-3-21 14:26 | 顯示全部樓層
小炒肉111 發(fā)表于 2020-3-15 00:30
你好,判斷是否是OK,問題解決了嗎?怎么解決的?

還沒有  換了一個方向..
回復(fù)

使用道具 舉報

ID:569113 發(fā)表于 2021-4-12 11:50 | 顯示全部樓層
請問樓主你解決了嗎?我也遇到了這個問題,不知道該怎么去判斷。。。。
回復(fù)

使用道具 舉報

ID:883031 發(fā)表于 2021-4-12 13:51 | 顯示全部樓層
字符串比較一下
回復(fù)

使用道具 舉報

ID:569113 發(fā)表于 2021-4-17 15:54 | 顯示全部樓層
好吧我解決了,我用strstr函數(shù)比較出來了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表