用COM2实现通信控制出现的问题,请指教!!!
lcjfy 2002-08-24 10:54:48 我正在写一段通信控制的程序,根据设备方提供的通信协议,用RS232进行通信控制。
我从网上下载了一个样板程序,在上面做了一点改动,结果没有一点反应。请大家指教,小弟不胜感激。谢谢!(我在线等待!!!)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *ComNo;
DCB dcb;
String Temp;
//取得要打开的通信端口
Temp = "COM2";
//转换至指针类型Char
ComNo = Temp.c_str();
hComm1 = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
if (hComm1 == INVALID_HANDLE_VALUE) // 如果通信端口未打开
{
MessageBox(0, "打开通信端口错误!!","Comm Error",MB_OK);
return;
}
//通信协议上标明:1个起始位,接着5个数据位,接着1个结束位,然后是校验位(5个数据位之和)
GetCommState(hComm1,&dcb); // 得知目前通信端口的状态
dcb.BaudRate = CBR_9600; // 设置波特率为9600
dcb.ByteSize = 8; // 字节为 8 bit
dcb.Parity = NOPARITY; // Parity 为 None
dcb.StopBits = ONESTOPBIT; // 1 个Stop bit
//通信端口设置
//以上设置有问题没有??????
if (!SetCommState(hComm1, &dcb))
{ // 设置通信端口的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm1);
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//下面是根据协议的控制命令,这样表示对吗??????
char SendData[8]={{'0xa0'},{'0x01'},{'0x02'},{'0x00'},{'0x00'},{'0x21'},{'0xaf'},{'0x24'}};
//-------------------
int ln;
unsigned long lrc,BS;
if (hComm1==0) return; //检查Handle值
BS = StrLen(SendData); //取得字符串长度
//实际的发送动作
WriteFile(hComm1,SendData,BS, &lrc,NULL); // 送出数据
}