用 CreateFile 方法打开了串口,如何关闭。

s98231106 2003-02-20 12:45:10

如题。
...全文
530 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gfh_79_0 2003-02-20
  • 打赏
  • 举报
回复
转贴:

HANDLE hComm; //将给串行端口使用的Handle声明全局变量
bool PortOpen; //判断串行端口是否打开声明全局变量
void __fastcall TForm1::Button1Click(TObject *Sender)
{if(PortOpen==false)
{ char *ComNo;
DCB dcb;
String Temp;
//取得要打开的通信端口
Temp = "COM1";
//转换至指针类型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;
}
PortOpen=true;
}
else
{ShowMessage("通信端口已打开"); PortOpen=false;
}
}
//------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{ CloseHandle(hComm); //关闭通讯端口

}
penu 2003-02-20
  • 打赏
  • 举报
回复
关闭句柄。
7rainbow 2003-02-20
  • 打赏
  • 举报
回复
同上。
szbug 2003-02-20
  • 打赏
  • 举报
回复
CloseHandle(xxx);
arran 2003-02-20
  • 打赏
  • 举报
回复
__fastcall TForm1::~TForm1(void)
{
PurgeComm(hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);
CloseHandle(hComm);
}
kingfish 2003-02-20
  • 打赏
  • 举报
回复 1
CloseHandle(hd);就行

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧