用C++语言,上位机与PLC通讯有问题

qq_40378122 2018-07-15 06:40:27
我用VS2010C++窗体程序,做了两个按钮通过串口向PLC发送数据,一个为打开Y0-Y7,一个为关闭Y0-Y7。现在又个问题是,我按了按钮1,打开了,我按按钮2关闭不了。要我重新关闭调试,再打开按按钮2可以关闭,但是按钮一又不能打开。两个之间只能用一次。
...全文
846 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33487700 2020-11-27
  • 打赏
  • 举报
回复
不过和PLC通信应该都有专门的库吧,倍福就有ADS通信库。用库比较简单。
qq_33487700 2020-11-27
  • 打赏
  • 举报
回复
你两个按钮的点击响应事件里面都调用了CreateFile来打开串口,但没有关闭串口。按钮1执行成功,然后执行按钮2,在按钮2里面CreateFile函数肯定会失败,因为串口已经打开了,所以返回值hcom是个无效句柄,你用一个无效句柄做WriteFile函数的参数,能执行成功才有问题呢。 解决办法: 将hcom定义为全局的,再增加一个按钮专门用于打开或关闭串口,这个按钮的响应函数里面根据状态来决定执行打开串口还是关闭串口。按钮1和按钮2专注于发送数据,不要在这里操作串口的打开和关闭;
weixin_47065273 2020-11-27
  • 打赏
  • 举报
回复
在端口处出错,可以做一个验证,如果端口号打开,则关闭,或者,如果打开则关闭再打开。你的程序在端口号已经打开的情况下再次打开同一个端口会出错误。最好每次用完关闭端口,再用的时候再打开。
倚栏|听风 2019-01-08
  • 打赏
  • 举报
回复
我怎么看来看去这两个按钮的功能是一样的?
埃和智能 2019-01-08
  • 打赏
  • 举报
回复
可以用成熟的通讯库文件,比较方便的:
http://blog.sina.com.cn/s/blog_16d7d3ecb0102x6wj.html
JackyRao 2018-10-29
  • 打赏
  • 举报
回复
不能打开串口2次吧,可以对hCom做验证是否为空
qq_40378122 2018-07-15
  • 打赏
  • 举报
回复
qq_40378122 2018-07-15
  • 打赏
  • 举报
回复

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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