串口控制用C++写一个控制串口的
下面是我原来编制的一个模块,希望对你有用:
void BitBtn0Click()
{
char *ComNo;
DCB dcb;
String Temp;
//取得要打开的通信端口
Temp = "COM"+IntToStr(rdCOM->ItemIndex +1);
//转换至指针类型Char
ComNo = Temp。 c_str();
hComm = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
if (hComm == INVALID_HANDLE_VALUE) // ...全部
下面是我原来编制的一个模块,希望对你有用:
void BitBtn0Click()
{
char *ComNo;
DCB dcb;
String Temp;
//取得要打开的通信端口
Temp = "COM"+IntToStr(rdCOM->ItemIndex +1);
//转换至指针类型Char
ComNo = Temp。
c_str();
hComm = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
if (hComm == INVALID_HANDLE_VALUE) // 如果COM 未打开
{
MessageBox(0, "打开通信端口错误!!","Comm Error",MB_OK);
return;
}
//将dcb地址传入,以取得通信参数
GetCommState(hComm,&dcb); // 得知目前COM 的状态
dcb。
BaudRate = CBR_9600; // 设置波特率为9600
dcb。ByteSize = 8; // 字节为 8 bit
dcb。
Parity = NOPARITY; // Parity 为 None
dcb。
StopBits = ONESTOPBIT; // 1 个Stop bit
//通信端口设置
if (!SetCommState(hComm, &dcb))
{ // 设置COM 的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm);
return;
}
EscapeCommFunction( hComm, CLRDTR); //将DTR降为低电位
EscapeCommFunction( hComm, CLRRTS); //将RTS降为低电位
}
//-------------------------------------------------------
void BitBtn1Click()
{
//若通信端口未打开,则不作动作,并跳出
if (hComm==0)
{
MessageBox (0, "通信端口未打开!!!","Open Error",MB_OK);
return;
}
if (hComm == INVALID_HANDLE_VALUE) // 如果COM 未打开
{
MessageBox(0, "打开通信端口错误!!","Comm Error",MB_OK);
return;
}
//判断DTRState值,输出状态后,将原值作转态
if (DTRState)
{
//输出DTR状态为低电位
EscapeCommFunction( hComm, CLRDTR );
spDTR->Brush->Color=clWhite; //更改信号灯的颜色
}
else
{
//输出DTR的状态为高电位
EscapeCommFunction( hComm, SETDTR );
spDTR->Brush->Color=clRed; //更改信号灯的颜色
}
DTRState =~DTRState; //将DTRState转态
}
//-------------------------------------------------------
void Button2Click()
{
if (hComm!=INVALID_HANDLE_VALUE)
CloseHandle(hComm);
exit(EXIT_SUCCESS);
}
//-------------------------------------------------------
void BitBtn3Click()
{
//若通信端口未打开,则不作动作,并跳出
if (hComm==0)
{
MessageBox (0, "通信端口未打开!!!","Open Error",MB_OK);
return;
}
if (hComm == INVALID_HANDLE_VALUE) // 如果COM 未打开
{
MessageBox(0, "打开通信端口错误!!","Comm Error",MB_OK);
return;
}
//判断RTSState值,输出状态后,将原值作转态
if (RTSState)
{
//输出RTS状态为低电位
EscapeCommFunction( hComm, CLRRTS );
spRTS->Brush->Color=clWhite; //更改信号灯的颜色
}
else
{
//输出RTS的状态为高电位
EscapeCommFunction( hComm, SETRTS );
spRTS->Brush->Color=clRed; //更改信号灯的颜色
}
RTSState =~RTSState; //将RTSState转态
}。收起