第一次做串口程序,请指教
为什么下面的程序可以打开串口却总是读写不成功呢?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hCommFile=CreateFile("COM2", //串口号
GENERIC_READ|GENERIC_WRITE, //允许读写
0, //通讯设备必须以独占方式打开
NULL, //无安全属性
OPEN_EXISTING, //通讯设备已存在
FILE_FLAG_OVERLAPPED, //异步I/O
0); //通讯设备不能用模板打开
if ( hCommFile == INVALID_HANDLE_VALUE )
{
MessageBox( 0, "打开通信端口错误!!", "设备错误", MB_OK );
return;
}
// 设置设备属性
DCB dcb; // TDCB 串口的设备控制块,定义串口通信时使用的波特率,停止位,校验方法等。
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
if (!SetCommState(hCommFile,&dcb))
{
MessageBox( 0, "通信端口设置错误!!!", "设置错误", MB_OK);
CloseHandle( hCommFile );
Button2->Enabled=true;
Button2->Enabled=false;
Button3->Enabled=false;
Button4->Enabled=false;
Shape1->Brush->Color=clRed;
}
else
{
Button1->Enabled=false;
Button2->Enabled=true;
Button3->Enabled=true;
Button4->Enabled=true;
Shape1->Brush->Color=clGreen;
}
// 读设备数据
char strBuffer[1024]="asdf";
// ZeroMemory(strBuffer,sizeof(strBuffer));
ShowMessage(AnsiString(strBuffer));
DWORD dwReadNum;
if(ReadFile(hCommFile,&strBuffer,1024,&dwReadNum,NULL))
ShowMessage(AnsiString(strBuffer));
else
ShowMessage("读取不成功!");
}