Linux 虚拟串口(可用于在本机上模拟串口进行调试)
来源:互联网 发布:美国研究生费用 知乎 编辑:程序博客网 时间:2024/05/16 01:17
http://blog.sina.com.cn/s/blog_6cb543ef0100x90j.html
Python语言:
程序名叫mkptych.py,在终端里运行“python mkptych.py&”,这样就可以生成一个基于pty(伪终端)的虚拟端口对,两个设备名会显示在终端里。然后就可以利用这两个设备名在本机上进行虚拟串口之类的调试, 使用完后用ps查看这个python进程的pid号,然后kill掉即可。 下面编写一个用上述虚拟串口的使用程序: //receive.c #include<stdio.h> #include<string.h> #include<malloc.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<unistd.h> #include<termios.h> #include<math.h>
#define MAX_BUFFER_SIZE512
int fd,s;
intopen_serial() { //这里的 /dev/pts/2是使用mkptych.py虚拟的两个串口名字之一 fd = open("/dev/pts/2",O_RDWR|O_NOCTTY|O_NDELAY); if(fd == -1) { perror("open serial porterror!\n"); return -1; }
printf("open/dev/ttyS0.\n"); return 0; }
intmain() { char hd[MAX_BUFFER_SIZE],*rbuf; int flag_close,retv; struct termiosopt;
retv =open_serial(); if(retv <0) { printf("Open serrial porterror!\n"); return -1; }
tcgetattr(fd,&opt); cfmakeraw(&opt); cfsetispeed(&opt,B9600); cfsetospeed(&opt,B9600); tcsetattr(fd, TCSANOW,&opt); rbuf = hd; printf("Ready for receivingdata...\n");
while(1) { while((retv = read(fd,rbuf, 1)) > 0) printf( "%c ",*rbuf); }
printf("\n"); flag_close =close(fd); if(flag_close ==-1) printf("Close the devicefailure!\n");
return 0; }
//send.c #include<stdio.h> #include<string.h> #include<malloc.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<unistd.h> #include<termios.h>
#define MAX_BUFFER_SIZE512
int fd,flag_close;
intopen_serial() { //这里的 /dev/pts/1是使用mkptych.py虚拟的两个串口名字之一 fd = open("/dev/pts/1",O_RDWR | O_NOCTTY | O_NONBLOCK); if(fd == -1) { perror("open serial porterror!\n"); return -1; }
printf("Open serial portsuccess!"); return 0; }
int main(int argc, char*argv[]) { char sbuf[] = {"Hello, thisis a serial port test!\n"}; int retv; struct termiosoption;
retv =open_serial(); if(retv <0) { perror("open serial porterror!\n"); return -1; }
printf("Ready for sendingdata...\n");
tcgetattr(fd,&option); cfmakeraw(&option);
cfsetispeed(&option,B9600); cfsetospeed(&option,B9600);
tcsetattr(fd, TCSANOW,&option);
int length =sizeof(sbuf); retv = write(fd, sbuf,length); if(retv == -1) { perror("Write dataerror!\n"); return -1; }
printf("The number of charsent is %d\n", retv); return 0; } 编译运行即可,呵呵
#! /usr/bin/env python
#coding=utf-8
import pty
import os
import select
def mkpty():
#打开伪终端
master1, slave = pty.openpty()
slaveName1 = os.ttyname(slave)
master2, slave = pty.openpty()
slaveName2 = os.ttyname(slave)
print '\nslavedevice names: ', slaveName1, slaveName2
return master1, master2
if __name__ == "__main__":
master1, master2 = mkpty()
while True:
rl, wl, el = select.select([master1,master2], [], [], 1)
for master in rl:
data = os.read(master, 128)
print "read %d data." % len(data)
if master==master1:
os.write(master2, data)
else:
os.write(master1, data)
#coding=utf-8
import
import
import
def
if
0 0
- Linux 虚拟串口(可用于在本机上模拟串口进行调试)
- Linux下的虚拟终端(可用于在本机上模拟串口进行调试)
- 用虚拟串口进行串口调试
- 列举本机串口(含虚拟串口)
- 串口调试助手+虚拟串口VSPD 进行COM口调试
- 使用虚拟串口在一台电脑上模拟串口通讯
- MDK中使用虚拟串口进行调试
- 使用虚拟串口软件实现单机进行串口通信调试
- android串口编程--------如何在window7系统上模拟串口调试
- 使用串口模拟工具进行串口程序开发调试
- 使用串口模拟工具进行串口程序开发调试
- C#获取本机可用串口
- 虚拟串口调试技巧
- vspm虚拟串口调试
- vspm虚拟串口调试
- 利用linux虚拟机进行串口通信模拟
- 关于在Win7上模拟串口通信
- keil 串口 模拟 调试
- VMware克隆虚拟机 eth0: unknown interface: No such device
- JMeter 入门 操作
- php加密函数使用
- IE8二三事
- apache的FileUtils方法大全
- Linux 虚拟串口(可用于在本机上模拟串口进行调试)
- 简单dp算法——百炼02:滑雪
- 使用Faster-Rcnn进行目标检测
- Lockstep 之寻路算法
- 继承和派生
- 简单的改变图片大小的java工具类
- NYOJ914 Yougth的最大化 (最大化平均值)
- ios developer tiny share-20160722
- sql---trace的用法