RS232转USB的问题

AHJ9527 2017-11-27 11:19:53
最近在做电子秤的称重系统,因为客户的电脑都没RS232串口,只能用USB转接口,现在发现每隔一段时间都会提示接口不存在或者被占用,要拔掉换另外一个USB口才能正常使用,有大神知道怎么搞吗?
...全文
1120 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2018-08-14
  • 打赏
  • 举报
回复
引用 12 楼 ckc 的回复:
[quote=引用 11 楼 of123 的回复:]
[quote=引用 9 楼 ckc 的回复:]
usb转的本来就不稳定,这个不知道是usb的问题还是windows的问题
你可以换一些号称比较稳定的芯片,不过仍然要做好需要重新插拨的准备

看来你用的一直是烂芯片。

什么叫“本来就不稳定“?本来指什么?

实现 U 转串的 USB 设备类是 CDC 设备类,有国际标准,应用非常广泛。我用我公司的芯片也实现过。

凡是芯片没有问题,都是非常稳定的。[/quote]
这么多年用了很多种usb转串口的玩意了,稳定性比起原生的com口都要差。
差的可能是用着用着就不行了
比较差的是用的时候长了就不稳定了,不知道什么时候就不行了
比较好的可能也会在休眠,插拨其它usb设备啊之类的时候失灵。
我怀疑你没怎么用过原生的com口,所以你根本就不知道啥叫真正的稳定。[/quote]笑话。哪家公司做产品不经过几千小时的压力试验和模拟插拔实验?你以为都像你业余玩?
of123 2018-08-13
  • 打赏
  • 举报
回复
引用 9 楼 ckc 的回复:
usb转的本来就不稳定,这个不知道是usb的问题还是windows的问题
你可以换一些号称比较稳定的芯片,不过仍然要做好需要重新插拨的准备

看来你用的一直是烂芯片。

什么叫“本来就不稳定“?本来指什么?

实现 U 转串的 USB 设备类是 CDC 设备类,有国际标准,应用非常广泛。我用我公司的芯片也实现过。

凡是芯片没有问题,都是非常稳定的。
of123 2018-08-13
  • 打赏
  • 举报
回复
换基于 FT232 芯片的转换线。有些芯片就是有问题。
ckc 2018-08-13
  • 打赏
  • 举报
回复
引用 11 楼 of123 的回复:
[quote=引用 9 楼 ckc 的回复:] usb转的本来就不稳定,这个不知道是usb的问题还是windows的问题 你可以换一些号称比较稳定的芯片,不过仍然要做好需要重新插拨的准备
看来你用的一直是烂芯片。 什么叫“本来就不稳定“?本来指什么? 实现 U 转串的 USB 设备类是 CDC 设备类,有国际标准,应用非常广泛。我用我公司的芯片也实现过。 凡是芯片没有问题,都是非常稳定的。[/quote] 这么多年用了很多种usb转串口的玩意了,稳定性比起原生的com口都要差。 差的可能是用着用着就不行了 比较差的是用的时候长了就不稳定了,不知道什么时候就不行了 比较好的可能也会在休眠,插拨其它usb设备啊之类的时候失灵。 我怀疑你没怎么用过原生的com口,所以你根本就不知道啥叫真正的稳定。
yulian13145 2018-08-11
  • 打赏
  • 举报
回复
CP2012
ckc 2018-08-11
  • 打赏
  • 举报
回复
usb转的本来就不稳定,这个不知道是usb的问题还是windows的问题
你可以换一些号称比较稳定的芯片,不过仍然要做好需要重新插拨的准备
wpeng3762825 2018-04-18
  • 打赏
  • 举报
回复
FT232比较稳定
Acuity. 2018-04-13
  • 打赏
  • 举报
回复
用好的usb转串口芯片,一直用cp2102,很稳定。
AHJ9527 2018-03-31
  • 打赏
  • 举报
回复
引用 2 楼 u012115420 的回复:
[quote=引用 1 楼 tianxj001 的回复:] 正常情况,USB-UART插上电脑,一个正常的串口程序控制着,完全可以连续工作而不会产生不识别或者被占用情况。 如果系统没有另外控制串口的程序在后台运行,同时如果该USB转串口正常是不会出现这个情况的,一般出现这种情况,怀疑平台原因或者是USB-UART转换芯片的问题,当然,如果控制该串口的上位机程序没写好,发生这种情况的可能性也是存在的。 另外也可以检测一下,该USB-UART转换器在发生情况时候,该USB端口供电5V是不是还在?
能不能麻烦你帮我看下上位机的控制代码,这段接口重连的 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False MSComm1.CommPort = Module1.GetPort() MSComm1.Settings = "9600,n,8,1" ' 和 MSComm1.Settings = "9600n81"均对 MSComm1.RThreshold = 1 '自动触发接收 MSComm1.InBufferCount = 0 '清空缓冲区 MSComm1.PortOpen = True 这段是获取返回的数据的: Select Case MSComm1.CommEvent Case comEvReceive If cmdCom.BackColor = RGB(0, 255, 0) Then If Len(Text_NO.Text) > 0 Then ' 出库单号 If (Me.Grid1.Rows) <= Val(Me.Text_Num.Text) Then Dim str As String MSComm1.InputMode = comInputModeText str = MSComm1.Input str = Replace(Replace(Replace(str, " ", ""), vbCr, ""), vbLf, "") If bo Then If Asc(VBA.Mid(str, Len(str) - 1, 1)) <= 57 And Asc(VBA.Mid(str, Len(str) - 1, 1)) >= 48 Then Wight = Wight + Val(Left(str, Len(str) - 1)) test = Left(str, Len(str) - 1) Else Wight = Wight + Val(Left(str, Len(str) - 2)) test = Left(str, Len(str) - 2) End If Me.Text_W.Text = Wight temp = Grid1.Rows & vbTab & Me.Text_NO.Text & vbTab & Now() & vbTab & test & vbTab & Module1.userName Call Grid1.AddItem(temp, True) A = Me.Grid1.Rows End If Else str = MSComm1.Input MsgBox "已经超过称重次数!" End If Else str = MSComm1.Input End If Else str = MSComm1.Input MsgBox "离开状态,不能称重!" End If End Select 整个程序只有这两个地方控制串口的,这个会不会跟我没处理那些返回的错误有关?[/quote]是转接口的芯片问题,现在加了个串口,就屁事没有了
AHJ9527 2017-11-28
  • 打赏
  • 举报
回复
引用 1 楼 tianxj001 的回复:
正常情况,USB-UART插上电脑,一个正常的串口程序控制着,完全可以连续工作而不会产生不识别或者被占用情况。 如果系统没有另外控制串口的程序在后台运行,同时如果该USB转串口正常是不会出现这个情况的,一般出现这种情况,怀疑平台原因或者是USB-UART转换芯片的问题,当然,如果控制该串口的上位机程序没写好,发生这种情况的可能性也是存在的。 另外也可以检测一下,该USB-UART转换器在发生情况时候,该USB端口供电5V是不是还在?
能不能麻烦你帮我看下上位机的控制代码,这段接口重连的 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False MSComm1.CommPort = Module1.GetPort() MSComm1.Settings = "9600,n,8,1" ' 和 MSComm1.Settings = "9600n81"均对 MSComm1.RThreshold = 1 '自动触发接收 MSComm1.InBufferCount = 0 '清空缓冲区 MSComm1.PortOpen = True 这段是获取返回的数据的: Select Case MSComm1.CommEvent Case comEvReceive If cmdCom.BackColor = RGB(0, 255, 0) Then If Len(Text_NO.Text) > 0 Then ' 出库单号 If (Me.Grid1.Rows) <= Val(Me.Text_Num.Text) Then Dim str As String MSComm1.InputMode = comInputModeText str = MSComm1.Input str = Replace(Replace(Replace(str, " ", ""), vbCr, ""), vbLf, "") If bo Then If Asc(VBA.Mid(str, Len(str) - 1, 1)) <= 57 And Asc(VBA.Mid(str, Len(str) - 1, 1)) >= 48 Then Wight = Wight + Val(Left(str, Len(str) - 1)) test = Left(str, Len(str) - 1) Else Wight = Wight + Val(Left(str, Len(str) - 2)) test = Left(str, Len(str) - 2) End If Me.Text_W.Text = Wight temp = Grid1.Rows & vbTab & Me.Text_NO.Text & vbTab & Now() & vbTab & test & vbTab & Module1.userName Call Grid1.AddItem(temp, True) A = Me.Grid1.Rows End If Else str = MSComm1.Input MsgBox "已经超过称重次数!" End If Else str = MSComm1.Input End If Else str = MSComm1.Input MsgBox "离开状态,不能称重!" End If End Select 整个程序只有这两个地方控制串口的,这个会不会跟我没处理那些返回的错误有关?
tianxj001 2017-11-27
  • 打赏
  • 举报
回复
正常情况,USB-UART插上电脑,一个正常的串口程序控制着,完全可以连续工作而不会产生不识别或者被占用情况。 如果系统没有另外控制串口的程序在后台运行,同时如果该USB转串口正常是不会出现这个情况的,一般出现这种情况,怀疑平台原因或者是USB-UART转换芯片的问题,当然,如果控制该串口的上位机程序没写好,发生这种情况的可能性也是存在的。 另外也可以检测一下,该USB-UART转换器在发生情况时候,该USB端口供电5V是不是还在?

2,425

社区成员

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

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