发在BCB里没有解决不知道为什么cs.cbInQue的值为40,而inbuff的值为5。传回来的数据少了很多。大家多多帮忙啊,谢谢~!
String Temp;
char SendData[20],inbuff[1024];
DWORD nBytesRead,dwError;
COMSTAT cs;
unsigned long lrc,BS;
DCB dcb;
memset(SendData,0,sizeof(SendData));
memset(inbuff,0,sizeof(inbuff));
Temp="COM"+IntToStr(rdCom->ItemIndex+1);
hComm=CreateFile(Temp.c_str(),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)
{
MessageBox(0,"打开通信端口错误!","信息提示",MB_OK);
return;
}
GetCommState(hComm,&dcb);
dcb.BaudRate=CBR_9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
if(!SetCommState(hComm,&dcb))
{
MessageBox(0,"通信端口设置错误!","信息提示",MB_OK);
CloseHandle(hComm);
return;
}
SendData[0]=0x1b;
SendData[1]=0x10;
SendData[2]=0x10;
SendData[3]=0x00;
SendData[4]=0x05;
SendData[5]=0xc5;
SendData[6]=0x93;
SendData[7]='\0';
BS=7;
WriteFile(hComm,SendData,BS,&lrc,NULL);
Sleep(100);
ClearCommError(hComm,&dwError,&cs);
if(cs.cbInQue>sizeof(inbuff))
PurgeComm(hComm,PURGE_RXCLEAR);
Edit1->Text=IntToStr(cs.cbInQue);
ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);
inbuff[cs.cbInQue]='\0';
Edit2->Text=StrLen(inbuff);
Memo1->Text=String(inbuff);
if(hComm!=INVALID_HANDLE_VALUE)
CloseHandle(hComm);
String Temp;
char SendData[20],inbuff[1024];
DWORD nBytesRead,dwError;
COMSTAT cs;
unsigned long lrc,BS;
DCB dcb;
memset(SendData,0,sizeof(SendData));
memset(inbuff,0,sizeof(inbuff));
Temp="COM"+IntToStr(rdCom->ItemIndex+1);
hComm=CreateFile(Temp.c_str(),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)
{
MessageBox(0,"打开通信端口错误!","信息提示",MB_OK);
return;
}
GetCommState(hComm,&dcb);
dcb.BaudRate=CBR_9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
if(!SetCommState(hComm,&dcb))
{
MessageBox(0,"通信端口设置错误!","信息提示",MB_OK);
CloseHandle(hComm);
return;
}
SendData[0]=0x1b;
SendData[1]=0x10;
SendData[2]=0x10;
SendData[3]=0x00;
SendData[4]=0x05;
SendData[5]=0xc5;
SendData[6]=0x93;
SendData[7]='\0';
BS=7;
WriteFile(hComm,SendData,BS,&lrc,NULL);
Sleep(100);
ClearCommError(hComm,&dwError,&cs);
if(cs.cbInQue>sizeof(inbuff))
PurgeComm(hComm,PURGE_RXCLEAR);
Edit1->Text=IntToStr(cs.cbInQue);
ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);
inbuff[cs.cbInQue]='\0';
Edit2->Text=StrLen(inbuff);
Memo1->Text=String(inbuff);
if(hComm!=INVALID_HANDLE_VALUE)
CloseHandle(hComm);
哪位大哥帮帮忙
言归正传,最近要上PC与FPGA通信,想用RS232,个人觉得龚建伟老师的串口调试助手v2.2相当不错,可以十六进制收发,那想必十进制发/二进制收应该也可以实现吧,问题是由于小妹还没搞到源程序呢,应该是有,原来应该是可以下,可现在不让下了,各位兄弟姐妹们,如果有的话,资源共享一下,小妹将感激不尽!咱邮箱:[email protected].
自己的程序,api方式的已经给你发了