51与PC串口通讯时,readfile()不能读取,用ClearCommError()得到的cs.cbInQue老是为0...
wz 2007-05-27 10:27:30
例如要发送“MCS-51”是‘M’、‘C’、...这样一个字符一个字符发呢,还是“MCS-51”一起串出去呢,如果是一起的话,如何得到其字符数
以下是部分测试代码:
//-----------------上位机接收代码--------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
String Temp;
char inbuff[1024];
DWORD nBytesRead, dwEvent, dwError;
COMSTAT cs;
ClearCommError(hComm,&dwError,&cs); //取得状态
if (cs.cbInQue > sizeof(inbuff)) // 数据是否大于我们所准备的缓冲区
{
PurgeComm(hComm, PURGE_RXCLEAR); // 清除通信端口数据
return;
}
ReadFile(hComm, inbuff,cs.cbInQue,&nBytesRead,NULL); // 接收通信端口的数据
//readfile()不能读取,用ClearCommError()得到的cs.cbInQue老是为0...
inbuff[cs.cbInQue]= '\0';//数组中的字符串结尾处补上零字符
mReceive->Text = inbuff;// 将数据显示于Memo1 上
}
//------------------------------------------------------------------
//-----------------下位机发送代码--------------------------------
trdata[7]={‘M’、‘C’、...、0x00}
main()
{
while(1)
{
if(trdata[i]!=0x00)
{
SBUF=trdata[i];
while(TI==0);
delay(12500); //此处是否需要延时?
TI=0;
}
}
//---------------------------------------------------------------
另:单片机发送后是否需要延时等待?