7839|22

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

USB 接口和RS232的区别 [复制链接]

最近我自己做了一个上位机软件,用C++ Builder做的

在用RS232进行通讯时可以,我想用USB来进行通讯
于是买了两家公司的USB转RS232的转换器

可是上位机上显示不出内容,用串口调试可以通讯,直接用RS232也可以

不知道各位有没有类似的经历,望大家多多指教

最新回复

看你软件是什么写的来定,在软件上改了并开串口是最终有效的修改。电脑的设置只是为软件使用串口的时候提供一个参考值。  详情 回复 发表于 2010-2-26 12:17
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你的是那款转换器?有些use转rs232的转换器不能转换所有的信号。建议换一个好点的
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我觉得不是你上位机的问题。而是发送给上位机的那部分是不是没有加载USB驱动?如果换了传输方式,你还按照以前传输串口的方式肯定不行的。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
我用的是特力的
还有就是utek的

我发现通讯是在通讯的
但是速度很慢,而且误码率或是滑针的现象很严重,所以显示的数据
都不是很正确

当我把串口关闭一次然后再打开一次的时候却能全部正确显示内容
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 tianpeijun123 的回复:
我觉得不是你上位机的问题。而是发送给上位机的那部分是不是没有加载USB驱动?如果换了传输方式,你还按照以前传输串口的方式肯定不行的。


有可能的

但是USB驱动不是在转换器里本身就应该都弄好的啊

我也问了他们那边的技术人员

人家也觉得奇怪
所以想在这里碰碰运气了
呵呵
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
除了找转换器外还有其他方法没?
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

7
 
mark 过路.......................
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

8
 
USB转串口最终在PC端会模拟成一个COM口,既然使用系统的通讯软件能够正常使用就说明转换本身没有问题的,问题出在你写的软件上,访问模拟品质COM和真实的COM没有什么区别,但是COM号要设置正确。
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

9
 
另外要先接那个USB转串口,待在设备管理器里边能够看到那个COM后再启动你的应用程序,顺序反了是不行的
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
应该是软件的问题!你在初始化串口的时候作些判断,确定串口有效并稳定后再进行操作!另外!有些转换器是不支持高波特率的!注意下!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
谢谢,大家的支持!
我也觉得可能是软件的问题。

可是找不到原因
我放在RS232上通讯时可以看到发送过来的校验和,但是在USB时获取的校验和是0
用通信助手又可以看到校验和,郁闷
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

12
 
  那明显是你的软件的问题了,调试助手都已经可以了还说啥,贴贴代码看看啊。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 

  1. void __fastcall TForm1::QueryProc()   //查询协议  普通信息
  2. {
  3. AnsiString str;
  4.   unsigned char Data[64];
  5.   unsigned short *p;
  6.   unsigned long *l;
  7.   long acc_p;
  8.   unsigned short tmp2;
  9.   float tmp,ac_v,ac_a;
  10.   SYSTEMTIME systime;

  11.   setmem(Data,64,0);
  12.   pkgBuf->GetData(Data);
  13.   acc_p= 0xa1 + 0x1c + Form1->SlaveAddr->Text.ToInt();

  14.   for(int i = 0; i < 33; i++)
  15.   {
  16.         acc_p += Data[i];
  17.   }
  18.   acc_p &= 0xff;//通过计算获得的校验和

  19.   pkgBuf->GetParityData(&cmdParity);
  20.   cmdParity &= 0xff;//直接获取的检验和

  21.   Form1->Edit6->Text = cmdParity;
  22.   Form1->Edit7->Text = acc_p;//此部分是我自己调试用的

  23.   if(cmdParity == acc_p)
  24.   {
  25.         p= (unsigned short*)&Data[0];        //直流电压
  26.         str = *p;
  27.         str = str.Insert(".",str.Length());
  28.         if(str.Pos(".") == 1)str = "0" + str;
  29.         Form1->vlQuery->Cells[1][1] = str+"V";

  30.         p= (unsigned short*)&Data[2];       //直流电流
  31.         str = *p;
  32.         str = str.Insert(".",str.Length());
  33.         if(str.Pos(".") == 1)str = "0" + str;
  34.         Form1->vlQuery->Cells[1][2] = str+"A";

  35.         p= (unsigned short*)&Data[4];
  36.         str = *p;
  37.         str = str.Insert(".",str.Length());
  38.         if(str.Pos(".") == 1)str = "0" + str;
  39.         Form1->vlQuery->Cells[1][3] = str + "V";
  40.         ac_v = (float)*p/10;
  41.        ....
  42.        ....
  43.   }
  44. }

复制代码

发现cmdParity获取老为0  但是当我重新关闭再打开一次串口时却可以获取到校验和,接下来就不可以了
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
现在有点觉得不是软件的问题

因为我在不断的打开和关闭串口时发现通信的数据都是正确的 而且成功率很高
但是只能是一次性的其他的时候传输的数据就不正确了

我专门做了下试验就是传特定的值过来,但是传过来的却是0,用232就没这问题
真是奇怪
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 
把串口停止位设为1.5或者2试下
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

16
 
會不會是電壓的問題,你可以在裝置管理員,USB 裝置看耗電量。不過照說不至於,因為 USB 接硬碟都可以,沒道理你的 RS232 吃電比較兇。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 14 楼 lin0119 的回复:
把串口停止位设为1.5或者2试下

是说在电脑上改呢?
还是软件上改?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 15 楼 suanyuan 的回复:
會不會是電壓的問題,你可以在裝置管理員,USB 裝置看耗電量。不過照說不至於,因為 USB 接硬碟都可以,沒道理你的 RS232 吃電比較兇。

可能是电压的问题
改停止位没什么作用,两个地方的停止位我都改试了

我看了电压,USB的电压只有1V,而RS232的电压却有4V。
请问大侠有啥好的办法增压没?
 
 
 

回复

64

帖子

0

TA的资源

纯净的硅(初级)

19
 
我说的电压时信号线上的电压,
USB电压时正常的,5V
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

20
 
有些串口控件  在com数目大于10 的时候会出问题
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表