Chinaunix首页 | 论坛 | 博客
  • 博客访问: 813004
  • 博文数量: 296
  • 博客积分: 5376
  • 博客等级: 大校
  • 技术积分: 2298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-14 19:02
文章分类

全部博文(296)

文章存档

2023年(2)

2020年(2)

2018年(2)

2017年(26)

2016年(4)

2015年(19)

2014年(12)

2013年(26)

2012年(84)

2011年(50)

2010年(41)

2009年(28)

分类: Python/Ruby

2012-02-25 15:04:45

use Win32::SerialPort ;    //引用SeriallPort模块

$PORTNAME = "COM7";  //设置串口号,大于9时候必须要加 "COM17"

my $ob = Win32::SerialPort->new($PORTNAME) || die "open com failed";

print "open com success\n";

eval  {
 $ob -> baudrate( 115200 );    #如果使用超过115200的波特率,执行脚本前先用串口通信工具用对应波特率打开串口,发个AT。

 $ob -> parity( 'none' );
 $ob -> databits( 8 );
 $ob -> stopbits( 1 );
 $ob -> handshake( 'rts' );  #硬件流控
 #$ob -> handshake( 'none' );  #无流控
 #$ob->buffers(4096, 4096);
};
if  ($@) { die   ' set $PORTNAME properties failed ' ;}

$ob -> write_settings ||  die   " CANNOT WRITE $PORTNAME DRIVER " ;
 
 
$ob->write ("ATI\r\n");   //写到串口
sleep(1);


my($count, $string) = $ob->read(100);  //从串口读100字节数据,读到的数据长度$count, 数据赋值给$string
if(defined($string))   //读到了数据
{
 print $string;
}

$ob->close;   //关闭串口
undef   $ob ;
exit(0);


#操作dtr引脚的方法
$ob->dtr_active(T);   #true: 拉低;
$ob->dtr_active(F);   #false:拉高
$ob->pulse_dtr_on($milliseconds);    #avtive拉低$milliseconds毫秒,再拉高$milliseconds毫秒
$ob->pulse_dtr_off($milliseconds);   #inavtive拉高$milliseconds毫秒,再拉低$milliseconds毫秒

 

#发送十六进制数

 $ob->transmit_char(0x1A);

 #transmit_char的方法在使用USB虚拟的串口发送时会失效,改用下面的方式:

  $str=pack(h6,"e70bA1");  # h  十六进制字符串(低位在前),实际发送数据为7E B0 1A

 $ob->write($str);

#或者
 $ob->write(pack(H6,"7EB01A"));   # H  十六进制字符串(高位在前)

http://blog.csdn.net/jqzw/article/details/7176259
阅读(4531) | 评论(0) | 转发(0) |
0

上一篇:repo的基本命令

下一篇:ubuntu下的vnc客户端

给主人留下些什么吧!~~