日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php接收rs485的数据如何处理,为什么485不能连续接收?

發布時間:2025/3/15 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php接收rs485的数据如何处理,为什么485不能连续接收? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

謝謝各位的回復!

我的STC11F04XE單片機程序如下,中斷接收數據,主程序中判斷收到4個字節數據就轉發。

PC串口轉485通過MAX485與單片機UART連接。調試助手發送單個字節,發送4次,能正確收到轉發回來的數據。一次發送4個字節,則必須發送兩次,才能收到轉發回來的4個字節數據,不過該數據是兩次發送的前2個字節。

用示波器觀察MAX485的數據接收端RI,波形很好。無論發送單字節還是4字節,波形都正確!問題應該在程序。請各位幫助我分析一下程序,我可能陷入某個誤區。

void? ? ? ? Serial0_ISR()? ? ? ? interrupt 4

{

unsigned char temp;

EA=0; //disable interrupt

if (RI)

{

RI=0;

temp=SBUF;? ? ? ? ? ? ? ? //讀取串口接收字節

RxData[RxCounter]=temp;? ? ? ? //接收數據,4字節

RxCounter++;

}

}

//-------------------------------------------------------------------

void SendChar(unsigned char temp)

{

SBUF=temp;

while(TI==0);

TI=0;

}

/********************************************************************/

void main (void)

{

unsigned char i;

ini8051();

delayxms(200); //延時一段時間

//? ?? ???CLRWDT();? ? ? ? ? ? ? ? //start watchdog

RxCounter =0;? ? ? ? //串行口接收數據計數器

RS485T1R0=0;? ? ? ? //485接收

start3:

RS485T1R0=0;? ? ? ? //485接收

ES=1; //enable UART interrupt

EA=1; //enable interrupt

if (RxCounter <4) goto noRevDa;//一幀數據,4字節

//命令協議解析處理

ES=0; //disable UART interrupt

RxCounter=0;

//轉發485收到的數據

RS485T1R0=1;? ? ? ? //485發送

_nop_(); _nop_(); _nop_(); _nop_();

//? ? ? ? ? ? ? ? for (i=5;i>0;--i) delayxms(200); //delay 1 seconds

for (i=0;i<4;i++)

{

SendChar(RxData);

}

ES=1;? ? ? ? //enable UART interrupt

RS485T1R0=0;? ? ? ? //485接收

for (i=0;i<3;i++) //LED閃爍3次,調試觀察

{

LED1=0; delayxms(200);

LED1=1; delayxms(200);

}

noRevDa:

//? ? ? ? ? ? ? ? ES=1; //enable UART interrupt

EA=1; //enable interrupt

//? ? ? ? ? ? ? ? RS485T1R0=1;? ? ? ? //485發送

LED1=0;??//LED亮滅,調試觀察

for (i=10;i>0;--i) delayxms(200); //delay 1 seconds

LED1=1;

for (i=10;i>0;--i) delayxms(200); //delay 1 seconds

_nop_();

goto start3;

}? ? ? ? // end of main

//僅僅重排版,使程序讀起來更容易。

總結

以上是生活随笔為你收集整理的php接收rs485的数据如何处理,为什么485不能连续接收?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。