我有点厌倦了阅读串口,首先使用Perl
Perl
不是我的主要开发工具,我来自PHP
背景。
所以请以正确的方式指导我。我的目的是从重量机器到网页读取数据,我已经对这个主题做了很多研究。
浏览器应用程序无法直接读取串口数据,因此我选择用户端机器可以安装服务器(Apache)并使用PHP执行任务,Web应用程序可以使用对{{1}的Ajax调用来读取结果这个想法在Linux机器上运行得很好,但在Windows PC上却停滞不前。
我知道PHP无法从像Linux这样的Windows中的串口读取数据,所以我选择Perl来做这些事情。我做了一些搜索,得到了一些代码,并且持续了8个小时我与之抗争:(
localhost url
代码无法正常运行,但在论坛和许多其他地方,它的工作方式如here,here,this和this。
我无法找到这意味着什么"使用Win32 :: SerialPort qw(:STAT 0.19);" 就像导入具有版本号的库一样。 ?
我已经安装了带有Perl和#!E:\xampp\perl\bin\perl.exe
# The above line is perl execution path in xampp
# The below line tells the browser, that this script will send html content.
# If you miss this line then it will show "malformed header from script" error.
print "Content-type: text/plain\n\n";
# use strict; use warnings;
use Win32;
require 5.003;
use Win32::SerialPort qw( :STAT 0.19 );
print "here";
$PortObj = new Win32::SerialPort ("COM3") || die "Can't open COM3: $^E\n";
print "here";
$PortObj->user_msg(ON);
$PortObj->databits(8);
$PortObj->baudrate(9600);
$PortObj->parity("none");
$PortObj->stopbits(1);
$PortObj->handshake("rts");
$PortObj->buffers(4096, 4096);
$PortObj->error_msg(1); # prints major messages like "Framing Error"
$PortObj->user_msg(1);
$PortObj->write_settings || undef $PortObj;
print "here";
# $PortObj->save($Configuration_File_Name);
$PortObj->read_interval(100); # max time between read char (milliseconds)
$PortObj->read_char_time(5); # avg time between read char
$PortObj->read_const_time(100);
print "here";
$string_in = $PortObj->read("200");
print $string_in
# $PortObj->baudrate(300);
# $PortObj->restart($Configuration_File_Name); # back to 9600 baud
$PortObj->close || die "failed to close";
undef $PortObj;
的Xampp及其API,但是当我运行代码时,它会返回错误,如
activePerl Win32::serialport 0.22
500错误
任何想法?
解决
对于阅读部分,我使用下面的代码。
Error message:
End of script output before headers: serial.pl
代码在CLI中工作正常,所以我只是放了一个PHP文件来读取perl脚本并返回数据。
答案 0 :(得分:1)
use Win32::SerialPort qw( :STAT 0.19 );
这与
相同use Win32::SerialPort ':STAT', '0.19';
:STAT
导入了许多有用的状态常量,并在模块文档中解释under Exports
0.19
是Perl的一部分,并且坚持Win32::SerialPort
的版本必须为0.19或更高版本。目前的版本是0.22。如果您将0.19
更改为0.23
,那么您将看到它具有的效果