医院新进一台生化分析仪,这台机器可以通过串口和电脑连接,化验结果可以通过串口传到电脑进行处理。
厂家提供了电脑端的软件,经过测试,软件可以接收到化验数据,但打印格式并不符合医院的要求,更重要的是,软件没有数据导出功能,化验结果不能整理到医院HIS系统里。
为了解决上问题,只能重新编程解决问题。
在Google上查询,Perl要处理串口通信要安装Win32::Serialport模块,如果在Linux上可以用Device::Serialport模块。
化验室的电脑是XP,在ActivePerl中安装Win32::Serialport模块,在ActivePerl中试了几次,没有安装好,因为这个模块需要编译,而XP上没有编译器。
后来想起了草莓Perl,自带编译器,所以安装了草莓Perl,顺利完成Win32::SerialPort和Win32::API两个模块。
化验室的电脑只需要接收数据,在Google上查“perl serialport”,会找到一些程序例子,经过简单的修改就可以在串口接收数据。
一旦接收数据成功,其他的问题,比如整理打印格式、写入其他数据库等等,都很好解决。
以下是部分关键代码:
#!/usr/bin/perl
use Win32::SerialPort;
my $port = 'COM1';
my $PortObj = new Win32::SerialPort ($port) || die "Can't open $port: $^E\n"; # $quiet is optional
$PortObj->error_msg(1); # use built-in error messages
$PortObj->user_msg(1);
$PortObj->databits(8);
$PortObj->baudrate(9600);
$PortObj->parity("none");
$PortObj->stopbits(1);
$PortObj->write_settings || die "Couldn't write settings\n";
sleep 3;
my $InBytes = 3000;
my ($count_in, $string_in) = $PortObj->read($InBytes);
if ($count_in != 0)
{
print "Status: $count_in \n$string_in\n";
print "$string_in\n";
}
undef $PortObj;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21129783/viewspace-662258/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21129783/viewspace-662258/
4058

被折叠的 条评论
为什么被折叠?



