- 论坛徽章:
- 0
|
找到出错的地方了
问题出在模块 win32::serialport,就是baudrate不能设置
用了个下面一段代码检查
use Win32::SerialPort;
my $Serial = new Win32::SerialPort('COM4') or die "Serial port died";
$Serial->baudrate(19200);
$Serial->parity('none');
$Serial->databits( ;
$Serial->stopbits(1);
$Serial->handshake('none');
$Serial->buffers(4096, 4096);
$Serial->error_msg(1);
$Serial->user_msg(1);
print "baud rate: ", join(" ", $Serial->baudrate), "\n";
$Serial->write_settings || die "Failed to write settings";
程序结果出现上面同样的错误提示,显示baudrate是1200,$Serial->baudrate(19200);这句似乎没有效果。
解决办法,代码如下:
use Win32::SerialPort;
my $Serial = new Win32::SerialPort('COM4') or die "Serial port died";
$Serial->{"_L_BAUD"}{19200} = 19200;
$Serial->baudrate(19200);
$Serial->parity('none');
$Serial->databits( ;
$Serial->stopbits(1);
$Serial->handshake('none');
$Serial->buffers(4096, 4096);
$Serial->error_msg(1);
$Serial->user_msg(1);
$Serial->write_settings || die "Failed to write settings";
添加红色的代码,就能成功运行
问题:
为什么模块的这个方法不能正确设置属性呢?原因是什么啊?
请大哥大姐们帮忙!谢谢 |
|