关于串口问题?急!!!

DongBeiXiNan 2003-08-21 11:26:39
我编的程序用WIN API调用串口,若重新启动计算机,必须先用其他工具使用串口并关闭后,我的程序才可通过串口进行通信,否则阻塞。
...全文
25 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jennifergiant 2003-08-23
  • 打赏
  • 举报
回复
up
DongBeiXiNan 2003-08-22
  • 打赏
  • 举报
回复
bSuccess返回是TRUE.
qgw_2000 2003-08-22
  • 打赏
  • 举报
回复
bSuccess返回是TRUE吗?
如果DCB设置正确,SetCommState一般是不会返回FALSE的。
AthlonxpX86 2003-08-22
  • 打赏
  • 举报
回复
SetCommState返回成功并不能说DCB设置的没有问题,我分析应该是你的DCB填充中的少设置了一些默认项,你先写一个小程序用来看看所有的DCB设置,分别纪录下你的软件能使用和不能使用这两种状态下的DCB,应该是有差别的,这样就能检查出错误了,记得检查出来后通知大家,呵呵^_^
DongBeiXiNan 2003-08-21
  • 打赏
  • 举报
回复
但是,如果我的程序可以使用串口通信后,无论如何关闭、打开我的程序都可使用串口通信。
Pipi0714 2003-08-21
  • 打赏
  • 举报
回复
在你的程序退出之前关闭串口
DongBeiXiNan 2003-08-21
  • 打赏
  • 举报
回复
我的设置,stopbits是正确的:
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 7;
dcb.Parity = EVENPARITY;
dcb.StopBits = ONE5STOPBITS;

bSuccess = SetCommState(m_hCom, &dcb);
qgw_2000 2003-08-21
  • 打赏
  • 举报
回复
我也遇到过这个问题,主要是因为SetCommState(HANDLE hFile, LPDCB dcb)
没有返回正确。
如果没有正确设置CommState,就会使用前一次别的程序设置的状态。
如果你的程序第一次使用串口,由于没有设置dcb就会收不到数据,在读操作处
挂起。
主要原因是DCB结构填充的问题, 你要注意停止位stopbits,
当你传1时实际上是1.5位,传0时为1位。
//如下是系统的define值:
#define ONESTOPBIT 0
#define ONE5STOPBITS 1
#define TWOSTOPBITS 2
overflywing 2003-08-21
  • 打赏
  • 举报
回复
用的是哪些WIN API?

2,640

社区成员

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

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