搜索
bottom↓
回复: 15

Win7不能够正确的接收XP下编写的串口?

[复制链接]

出0入0汤圆

发表于 2015-2-10 00:34:07 来自手机 | 显示全部楼层 |阅读模式
编写环境,Xp,串口收发程序,VS2008,vb.net。使用自带的serialPort。

在使用中,win7的电脑无法正确接收到下位机的响应。

由于win7无法安装frameWork3.5,也没有必要安装,总是无法接收正确。

下位机响应ok的,用别人的串口助手,丁丁等软件均OK

各位高手,这该如何是好???

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入54汤圆

发表于 2015-2-10 08:56:18 | 显示全部楼层
串口打开了没?
用API 还是MSCOMM32.OCX
引用MSCOMM32.OCX有没有出错?
MSCOMM32.OCX又没哟注册?
串口打开了没?
收到后能跳进事件函数里?
一点点的看看就知道了啊

出0入0汤圆

 楼主| 发表于 2015-2-10 09:21:32 来自手机 | 显示全部楼层
unifax001 发表于 2015-2-10 08:56
串口打开了没?
用API 还是MSCOMM32.OCX
引用MSCOMM32.OCX有没有出错?

我在自己的编译环境下都正常,在对方win7的环境下接收的数据不对。
正常情况是返回 01 03 ## CRC

用监听软件看见的是收到
F9 00
或者F9 00 FF FF

用别人的上位机软件能够收到正确的数据。

Win7安装vs2008又失败……

出0入0汤圆

 楼主| 发表于 2015-2-10 09:23:44 | 显示全部楼层
unifax001 发表于 2015-2-10 08:56
串口打开了没?
用API 还是MSCOMM32.OCX
引用MSCOMM32.OCX有没有出错?

我在VB.NET使用的是  SerialPort 成员

出0入0汤圆

发表于 2015-2-10 09:24:37 | 显示全部楼层
不能正确接收多数是程序没有写好,因为不知你的接收方式如何,先检查下有没有数据入事件中

出0入0汤圆

 楼主| 发表于 2015-2-10 09:30:58 | 显示全部楼层
   
'这个是 SerialPort 的DataReceived事件,在接收到数据后,打开一个100mS的定时器,模拟的是Modbus的T35
Public Shared Sub CommPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles CommPort.DataReceived
      CommT35Timer.Enabled = False
      CommT35Timer.Enabled = True
   End Sub


''''''这个是T35定时器的事件,把所有的串口缓存的数据读出来.
Public Shared Sub CommT35Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommT35Timer.Elapsed
      Dim inDataLen As Int16 = CommPort.BytesToRead()

      CommT35Timer.Enabled = False

      If inDataLen > 0 Then
         Array.Resize(Rsv, inDataLen)
         CommPort.Read(Rsv, 0, inDataLen)
         '校验数据帧的正确性
         Dim crc As Byte() = CRC16(Rsv, Rsv.Length)
         'CRC校验及接收数量校验
         If crc(0) = 0 And crc(1) = 0 Then
            bReceived = True
         End If
      End If
   End Sub

出0入0汤圆

 楼主| 发表于 2015-2-10 09:33:53 | 显示全部楼层
lee345 发表于 2015-2-10 09:24
不能正确接收多数是程序没有写好,因为不知你的接收方式如何,先检查下有没有数据入事件中 ...

我不能够调试对方的电脑,那台电脑没有安装VS2008

出0入0汤圆

 楼主| 发表于 2015-2-10 09:48:30 | 显示全部楼层
SerialPort.DataReceived 事件

平台

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。

难道在Win7中,不支持DataReceived 事件???shit

出0入0汤圆

发表于 2015-2-10 09:49:45 | 显示全部楼层
你这应当是接收没有写好,请参考下modbus的上位机程序,网上有

出0入0汤圆

发表于 2015-2-10 09:52:11 | 显示全部楼层
换vs2013重新编译,vs2013社区版免费的!

出0入0汤圆

 楼主| 发表于 2015-2-10 10:15:31 | 显示全部楼层
coleyao 发表于 2015-2-10 09:52
换vs2013重新编译,vs2013社区版免费的!

我的电脑配置不咋样,2013需要WIN8以上的系统...


打算用API来操作串口...

出0入20汤圆

发表于 2015-2-20 09:53:14 | 显示全部楼层
用API简单,没有32位,64位限制。win7,8下都可以顺利工作。

出0入0汤圆

发表于 2015-2-20 10:18:42 | 显示全部楼层
丁丁是cport控件,网上开源,你用这个控件写

出130入129汤圆

发表于 2015-2-20 10:31:53 | 显示全部楼层
呵呵,我用的还是CSerialPort类,VC2005环境,在XP下正常使用很久,但是WIN7 32/64下就异常了。
这个类还是纯API的,没去研究什么原因,但是XP和WIN7下串口操作肯定有些不同的地方,一般注意不到。

出0入0汤圆

发表于 2015-2-20 12:30:00 | 显示全部楼层
lihuyong 发表于 2015-2-10 10:15
我的电脑配置不咋样,2013需要WIN8以上的系统...

谁说要win8以上系统的?

出0入0汤圆

发表于 2015-2-20 15:07:00 | 显示全部楼层
我用Delphi7写的一个串口应用程序,在WIN7下正常,在XP下通信有误码,同样程序在XP下用USB转串口线正常。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 03:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表