串口不接DTR,RTS线,程序中还需要对它们进行控制吗

zengqingqing 2010-05-14 04:47:47
vc 6的程序,用的OVERLAPPED方式.
一台pc控制多个串口设备.
pc和设备之间只接TX,RX,GND三根线
DCB初始化时置了
dcb.fRtsControl=RTS_CONTROL_DISABLE;
dcb.fDtrControl=DTR_CONTROL_DISABLE;

但是其中一个串口在WriteFile之前如果不进行
EscapeCommFunction(m_hcom,SETRTS|SETDTR);
就不能正常通讯,其它串口却正常,
请帮忙解释下原因,和硬件有什么关系吗?
...全文
1005 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengqingqing 2010-05-24
  • 打赏
  • 举报
回复
请高人出场解释下
zengqingqing 2010-05-17
  • 打赏
  • 举报
回复
人工顶帖
zengqingqing 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lfchen 的回复:]
// 每个串口所接的设备是否相同?
// 是否是下位机引起的?
[/Quote]
判断与下位机无关,因为每台设备都是相同的,换接到这个串口上就是不能通讯.
以下是DCB初始化:
dcb.DCBlength=sizeof(DCB);
dcb.BaudRate=57600;
dcb.ByteSize=8;
dcb.StopBits=0;
dcb.Parity=0;
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
dcb.fNull = FALSE;
dcb.fAbortOnError = FALSE;
dcb.fRtsControl=RTS_CONTROL_DISABLE;
dcb.fDtrControl=DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity=FALSE;
dcb.fOutxCtsFlow = FALSE;
dcb.fOutxDsrFlow = FALSE;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.XonChar=0x11;
dcb.XoffChar=0x13;
dcb.XonLim=50;
dcb.XoffLim=50;
一条晚起的虫 2010-05-14
  • 打赏
  • 举报
回复
//还是把你的DCB设置贴出来看一下吧。
一条晚起的虫 2010-05-14
  • 打赏
  • 举报
回复
// 每个串口所接的设备是否相同?
// 是否是下位机引起的?
zengqingqing 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jennyvenus 的回复:]
如果只有那一个串口,会有问题吗?
[/Quote]
只接那一个串口也不行,现在就是不明白没有接控制线,为什么还要给DTR,RTS置位
用户 昵称 2010-05-14
  • 打赏
  • 举报
回复
如果只有那一个串口,会有问题吗?
贝隆 2010-05-14
  • 打赏
  • 举报
回复
一般情况下,可以不用接线,RXD和TXD交互接线就可以
zengqingqing 2010-05-14
  • 打赏
  • 举报
回复
欢迎讨论,请高手解释下原因
洗洗睡去 2010-05-14
  • 打赏
  • 举报
回复
一般不用控制的 通信就2跟线
zengqingqing 2010-05-14
  • 打赏
  • 举报
回复
忘了说明,所有的串口设备和连线都是相同的

2,640

社区成员

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

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