如何利用usb口进行RS-232串口通讯?(50分)

  • 主题发起人 主题发起人 青云
  • 开始时间 开始时间

青云

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了一个程序,是利用com口进行通讯的,以前我一直用笔记本的com1口进行通讯,现在com口坏了,我买了一个usb转rs-232的转接口,但是现在程序运行不起来了。


我当时打开串口的方法:
用 CreateFile 函数定议如下:
HANDLE CreateFile(
PChar lpszName, //指定要打开的串口的逻辑名:用字串表示:如 'COM1','COM2'
DWORD fdwAcess, //访问类型,读: GENERIC_READ 写:GENERIC_WRITE
DWORD fdwShareMode, //共享模式;必须为0。串口不能共享
LPSECURITY_ATTRIBUTES lpsa, //指向一个安全属性结构 设为Nil 。
DWORD fdwCreate, //创建方法:串口操作为:OPEN_EXISTING
DWROD fdwAttrsAndFlags, //串口操作的属性
HANDLE hTemplateFile //模板文件的句柄
);
现在我用的是usb口,不到怎样打开?

 
我用的完全可以啊。我用的是Y-105。他会自动生产一个虚拟的COM口。查看“设备管理”中的“端口”,你可以知道是哪个COM口了。如我的是“Prolific USB-to-Serial COMM Port (COM3)”
 
某些USB生成的虚拟COM口可能是驱动有问题,用CreateFile('COM3',...);的方式打开有问题,需要这样打开CreateFile('//./COM3',...);
 
我用如下代码,可以用。
另外,我用APRO4.06 在ActivexForm里调用也成功的。
function DirectPrint(ACcommand: string): boolean; //通过AssignFile实现直接向串口发数据
var
f: Textfile;
begin
Result := False;
AssignFile(f, 'COM3');
try
rewrite(f);
writeln(f, ACcommand);
Result := True;
finally
closefile(f);
end;
end;
 
usb 转串口时产生的虚拟串口名一般不再是COM1,你可以从设备管理中查看。程序中把lpszName设置正确即可。不过目前 usb 转串口还不完善,不是所有设备都支持。
 
后退
顶部