Archive

Posts Tagged ‘串口通信’

USB转串口驱动打包下载

July 8th, 2011 will 1 comment

由于USB接口的普及与流行,自带串口的计算机越来越少,特别是笔记本电脑,自带串口的更少,这就需要用到USB转串口转换接头。越来越多的厂商进入之后,使得USB转串口的驱动也增多,一般买USB转串口转换头时,会带有安装光盘,但是太多仍然分不清,一般都是通过硬件搜索之后,自动选择安装驱动。

依稀记得串口转驱动的品牌有Z-TEK,U-TEK,也部分USB转RS485或RS422的驱动。

USB转串口经常将串口号定义很大,而有些软件不能访问,请查看windows下如何更改串口号

猛击下载USB转串口驱动

Categories: 软件应用 Tags: ,

串口调试助手_虚拟串口

July 7th, 2011 will No comments

在调试串口通信软件时,通常需要接收串口通信的数据,这时会自己编写一个软件模拟发送数据源,然后调试目标程序。两个程序之间通过计算机的物理串口连接通信,而现在的计算机带有两个串口的很少,而笔记本基本都没有串口了,这时可以使用虚拟串口软件,虚拟一对串口,对于我们编写的软件来说和真实的串口完全一样。

猛击下载虚拟串口

运行rar压缩包中的vspdxp_install.exe安装,完成后运行vspdconfig.exe设置串口,如图所示,点击图中Add pair添加COM4与COM5虚拟串口。

Virtual Serial Port Driver

完成后可以在计算管理中查看到虚拟串口,如图所示。

计算机管理虚拟串口

PS:虚拟串口只是给我们的串口调试程序提供了方便,程序完成一定要通过物理串口测试方能交付使用。

Categories: 软件应用 Tags: ,

串口测试通信软件

July 6th, 2011 will No comments

此软件可以测试串口通信的成功率,可以测试串口通信的成功率。

主要使用情况:

1、 FPGA编写的串口模块,在loop back模式下测试误码率;

2、 长的RS232电缆线测试通信误码率;

3、 测试数据转换接口的误码率,如USB转RS232串口,RS422转RS232,RS485转RS232,或网口转RS232。

使用时需要计算机具有两个独立的RS232串口,且串口号必须为COM1与COM2,因为软件中只预置了这两个串口。如果串口号不是COM1与COM2,请参照Windows下如何更改串口号。软件界面如图所示。

clip_image002

点击下载串口通信测试软件,summerv2.0.exe为主程序,MSCOMM32.OCX为串口控件,保持其与主程序在同一目录即可正常使用。

PS:可以先用两根短线串口线,连接测试此软件的正确性。

Categories: 软件应用 Tags: ,

Windows下如何更改串口号

July 5th, 2011 will No comments

Windows下载串口设备的以文件的方式打开,而文件名就是串口号。有些软件作者在编写软件时,只考虑了使用前4个串口,即COM1~COM4,而目前使用的USB转RS232串口经常会将串口号定义为COM8、COM12等等。遇到这种就需要修改windows下的串口号,使应用软件能够正常使用。

Windows下更改串口号方法:

1、“我的电脑”右键“管理”出现如图的窗口

计算机管理

2、选择一个串口,如图中COM5,右键“属性”,在串口中选择“端口设置”在“高级”。

clip_image004

3、然后选择一个串口,如COM2(一般计算机自带一个串口COM1),提示“正常使用”,选择是即可。

COM高级设置

Categories: 软件应用 Tags: , ,

编程读取注册表获取串口信息(支持Vista)

March 10th, 2010 will No comments

在编写串口通信程序时,经常需要列举计算机上目前可用的串口。最简单的方法是通过CreateFile串口号1~256(XP系统系统下最大支持的串口号为256),查看返回值,如果返回非INVALID_HANDLE_VALUE就证明此串口号存在。此方法简单实用,因为在只有一个串口的情况也需要遍历256个串口,需CreateFile256次,效率较低,而且不能显示目前正在使用的串口号。

下面介绍通过读取注册表获取串口号与串口个数的方法。

#define MAXCOMNO 256  //最大COM号256
typedef struct{
 char name[8];
 short no;
}SCOM;

/////用读注册表的方式查看系统的串口设备
void GetAvailableCom(SCOM *port,int &cnt)
{
 HKEY  hKey; 
 LONG  ret; 
 OSVERSIONINFO    osvi; 
 BOOL  bOsVersionInfoEx; 
 CString  keyinfo;
 unsigned char comm_name[40];
 char ValueName[40];
 char szNO[3];
 int  i=0,j=0;
 cnt=0;
 DWORD  sType,Reserved,cbData,cbValueName;
 
 ZeroMemory(&osvi,  sizeof(OSVERSIONINFO)); 
 osvi.dwOSVersionInfoSize  =  sizeof(OSVERSIONINFO); 
 
 keyinfo.Format(_T("HARDWARE\\DEVICEMAP\\SERIALCOMM"));
 //CString  keyinfo=_T("HARDWARE\\DEVICEMAP\\SERIALCOMM");

 i=0;  sType=REG_SZ;Reserved=0; 
 bOsVersionInfoEx  = GetVersionEx(&osvi); 

 ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyinfo,0,KEY_ALL_ACCESS,&hKey); 
 if  (ret==ERROR_SUCCESS)
 {
  if  (osvi.dwPlatformId  ==  VER_PLATFORM_WIN32_WINDOWS)    //WIN32,not used
  { 
   for(i=1;i<=MAXCOMNO;i++) 
   {
    memset(comm_name, 0, 40);
    sprintf((char*)comm_name,"COM%d",i);
    ret=RegEnumValue(hKey, i, ValueName, &cbValueName, NULL, &sType, comm_name, &cbData);
    if(ret==ERROR_SUCCESS)
    {
     i++;
    }

   } 
  } 
  else  if  (osvi.dwPlatformId  ==  VER_PLATFORM_WIN32_NT) //WINNT XP 2000
  { 
   do   
   { 
    cbData=40;cbValueName=40; 
    memset(comm_name,0,40);   
    memset(ValueName,0,40);
    memset(szNO,     0, 3);
    ret=RegEnumValue(hKey, i, ValueName, &cbValueName, NULL, &sType, comm_name, &cbData); 
    if  (ret==ERROR_SUCCESS) 
    { 
     for(j=0;j<cbData;j++)
     {
      port->name[j]=comm_name[j];
      if(j>2 && j<6)
      {
       szNO[j-3] = comm_name[j];
      }
     }
     port->no = atoi(szNO);
     port++;
     cnt++;
     i++; 
    } 
   }while(ret==ERROR_SUCCESS); 
  } 
 }
 RegCloseKey(hKey);
}

port包含串口名称与编号,由于注册表中的串口名称排列并非安装串口号顺序排列而是随即排列的,便于界面中顺序列出串口号,故分别保存便于判断。cnt返回当前计算机中包含的串口数量。

注:由于在串口号大于8之后,不能直接用COM10来CreateFile,而要用\\\\.\\COM10的形式,而在COM8一下采用\\\\.\\COM1来CreateFile也是可以的。
在Vista下用此程序来读取串口号失败,其实并没有失败而是在Vista下访问注册表需要管理员权限。解决办法单击你的程序,右键属性,选择“兼容性”选项卡,勾选最下面的“请以管理员身份运行改程序”。

Categories: 学习笔记 Tags: , ,