[转帖]XON / XOFF UART流量控制
大家好, 我的工作与需要从XMOS器件转移higth高速串行数据到主机的一个项目。 我用的模块快速UART()prensent在gihub资源库, 我想实现一个串行XON / XOFF软件流控制,从XMOS器件将数据传输到主机PC。
我写了下面的代码,但似乎不能很好地工作。
//Send buffer data to UART
void SendToSerial(streaming chanend DataFromFIFO, streaming chanend DataFromHostPC, streaming chanend DataToHostPC) {
unsigned int rx;
unsigned char XON = 1;
unsigned char RxFlow;
while(1){
select {
// xon/xoff char received from PC
case DataFromHostPC:> RxFlow:
if ( RxFlow == XOFF_CHAR){
XON = 0;
}
if ( RxFlow == XON_CHAR ){
XON = 1;
}
break;
// data from fifo to be sent over uart to the host pc
case DataFromFIFO :> rx:
// Checking if the transmission must be stopped
while( XON == 0 ){
DataFromHostPC:> RxFlow; // wait PC command
if ( RxFlow == XON_CHAR ){
XON = 1;
}
} // wating xon char ok
DataToHostPC <: rx;
break;
}
}
}
In main, i have:
par {
GetFromFIFO(DataFromFIFO); // Get data from fifo
HandleUart(DataFromFIFO,DataFromHostPC,DataToHostPC); // Send data to UART
ReceiveXOFF(DataFromHostPC); // Get data received from PC via UART
SendToHost(DataToHostPC); // Send data to UART
}
检查用示波器,当XOFF字符是由主机PC发送的串行线,数据不会停止。问题出在哪里?
如何正确实施XON / XOFF软件流控制?是否有任何示例代码?
提前致谢。
回答:
讨论:
发表时间:2014年9月2日23:58:37