串口的小问题,我搞了几天了都不知道错在哪里?

normalnotebook 2003-08-21 11:28:44
当我启动程序后,程序默认打开第一个串口,当我再运行程序一遍时,也是打开的第一个串口,明明我判断了,可这时就时出错。如果是打开的是不同的串口,可以互相进行通讯,一切正常。
初始化OnInitDialog()函数的内容如下:
m_ctrlComm.SetCommPort (Com);//指定串口号
if(m_ctrlComm.GetPortOpen ())
{
m_stateBar.SetWindowText ("初始化失败,请重新设置!");
AfxMessageBox("串口已经打开!");
}
else
{
m_ctrlComm.SetPortOpen (TRUE);//打开端口
setStateBar();
m_ctrlComm.SetInputMode (1);//以二进制读取数据
m_ctrlComm.SetRThreshold (1);//只要有一个或大于一个数据,便触发OnComm函数
m_ctrlComm.SetInputLen (0);//为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。
m_ctrlComm.GetInput ();//预读,清空缓冲区
}

我跟踪程序运行时,第二遍运行时也是打开的是第一个串口m_ctrlComm.GetPortOpen ()输出是0,但我前一个程序是打开的是第一个串口啊,请问错在什么地方?应该如何改正
...全文
40 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
normalnotebook 2003-08-25
  • 打赏
  • 举报
回复
哦,是这样啊,那么该怎样判断呢?
ustclancelot 2003-08-25
  • 打赏
  • 举报
回复
GetPortOpen() 只能判断本进程中此端口是否打开,也就是只判断此串口控件的状态。如果端口是被别的进程占用,则判断不出来。
lansefeng 2003-08-25
  • 打赏
  • 举报
回复
如果串口被打开,CreateFile()会失败,GetLastError()会返回响应的错误代码
normalnotebook 2003-08-22
  • 打赏
  • 举报
回复
但程序还是在运行的
normalnotebook 2003-08-22
  • 打赏
  • 举报
回复
根本还没有启动线程
ustclancelot 2003-08-22
  • 打赏
  • 举报
回复
你第二次运行程序的时候,第一次的进程有没有关掉?

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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