- 论坛徽章:
- 0
|
刚刚有思路了.等我写好就发发代码上来,给大家研究研究.刚试过了
- sysopen (FH,"COM1",066) || die "CANNOT OPEN THE COM PORT"; #打开串口.
- print FH 0x10.0x40.0x01; #写入数据
- close (FH); #关闭
复制代码
这句打开的话就可以直接使用COM串口,但是,串口配置是根据系统默认值来进行数据通信.
看了两天CPAN文档和PERLDOC,发现PERL对硬件(特别是COM口)的描述文档很少,但是对于功能来说..控制串口硬件这块有很多方法可以实现,就如果以最简单就是sysopen和fcntl,其次就是Device::SerialPort模块,但是这个模块的功能实在太多,而且文档比较难理解(因为我E文差).
正在研究还有一个问题就是,我所发送的数据使用16进制的,但是用捕捉串口数据,发现我发送的数据都会被狠狠的分开.也就是说我发送0x10,捕捉程序会变成31 34这样的数据.设备是不认这个命令的.现在有个解决方法,不知道能否解决,cpan上的Device::SerialPort里面有个方法.
- use strict;
- use Device::SerialPort;
- my $port = Device::SerialPort->new("COM1");
- $port->baudrate(9600);
- $port->parity('none');
- $port->databits(8);
- $port->stopbits(1);
- $port->datatype('raw'); #就是这个,数据变成RAW方式发送到COM口上.
复制代码
就是上面这段代码是典型的Device::SerialPort模块的引用.各位高人能够一起研究研究.
[ 本帖最后由 tmfc865 于 2010-1-7 15:25 编辑 ] |
|