php接收rs485的数据如何处理,为什么485不能连续接收?
謝謝各位的回復!
我的STC11F04XE單片機程序如下,中斷接收數(shù)據(jù),主程序中判斷收到4個字節(jié)數(shù)據(jù)就轉(zhuǎn)發(fā)。
PC串口轉(zhuǎn)485通過MAX485與單片機UART連接。調(diào)試助手發(fā)送單個字節(jié),發(fā)送4次,能正確收到轉(zhuǎn)發(fā)回來的數(shù)據(jù)。一次發(fā)送4個字節(jié),則必須發(fā)送兩次,才能收到轉(zhuǎn)發(fā)回來的4個字節(jié)數(shù)據(jù),不過該數(shù)據(jù)是兩次發(fā)送的前2個字節(jié)。
用示波器觀察MAX485的數(shù)據(jù)接收端RI,波形很好。無論發(fā)送單字節(jié)還是4字節(jié),波形都正確!問題應該在程序。請各位幫助我分析一下程序,我可能陷入某個誤區(qū)。
void? ? ? ? Serial0_ISR()? ? ? ? interrupt 4
{
unsigned char temp;
EA=0; //disable interrupt
if (RI)
{
RI=0;
temp=SBUF;? ? ? ? ? ? ? ? //讀取串口接收字節(jié)
RxData[RxCounter]=temp;? ? ? ? //接收數(shù)據(jù),4字節(jié)
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;? ? ? ? //串行口接收數(shù)據(jù)計數(shù)器
RS485T1R0=0;? ? ? ? //485接收
start3:
RS485T1R0=0;? ? ? ? //485接收
ES=1; //enable UART interrupt
EA=1; //enable interrupt
if (RxCounter <4) goto noRevDa;//一幀數(shù)據(jù),4字節(jié)
//命令協(xié)議解析處理
ES=0; //disable UART interrupt
RxCounter=0;
//轉(zhuǎn)發(fā)485收到的數(shù)據(jù)
RS485T1R0=1;? ? ? ? //485發(fā)送
_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次,調(diào)試觀察
{
LED1=0; delayxms(200);
LED1=1; delayxms(200);
}
noRevDa:
//? ? ? ? ? ? ? ? ES=1; //enable UART interrupt
EA=1; //enable interrupt
//? ? ? ? ? ? ? ? RS485T1R0=1;? ? ? ? //485發(fā)送
LED1=0;??//LED亮滅,調(diào)試觀察
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
//僅僅重排版,使程序讀起來更容易。
總結(jié)
以上是生活随笔為你收集整理的php接收rs485的数据如何处理,为什么485不能连续接收?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ms17-010 php版本,那年MS1
- 下一篇: php三表关联,详解Yii2 hasOn