go开发虚拟串口服务器,vspd.go
/*
* @Author: Robin
* @Date: 2020-02-20 17:38:31
* @LastEditors: Robin
* @LastEditTime: 2020-02-21 12:55:25
* @Description: 虚拟串口,仅适用与Linux/Mac
*/
package main
import (
"flag"
"fmt"
"log"
"os"
"sync"
"github.com/creack/pty"
"golang.org/x/crypto/ssh/terminal"
)
var wg sync.WaitGroup
func main() {
// 处理启动参数
num := flag.Int("num", 1, "serial number")
flag.Parse()
for i := 0; i < *num; i++ {
pty1, t1, err := pty.Open()
if err != nil {
log.Fatalln(err)
}
terminal.MakeRaw(int(t1.Fd())) // 设置为Raw模式,防止控制字符丢失
pty2, t2, err := pty.Open()
if err != nil {
log.Fatalln(err)
}
terminal.MakeRaw(int(t2.Fd())) // 设置为Raw模式,防止控制字符丢失
go tty1(t1, t2, pty1, pty2)
go tty2(t1, t2, pty1, pty2)
fmt.Println("Virtual Serial Port:", t1.Name(), "<===>", t2.Name())
}
wg = sync.WaitGroup{}
wg.Add(1)
wg.Wait()
}
// 串口1
func tty1(tty1, tty2, pty1, pty2 *os.File) {
var n int
var err error
buf := make([]byte, 1024)
for {
n, err = pty1.Read(buf)
if err != nil {
log.Fatalln(tty1.Name(), "Read Error", err.Error())
}
_, err = pty2.Write(buf[:n])
if err != nil {
log.Fatalln(tty2.Name(), "Write Error", err.Error())
}
}
}
// 串口2
func tty2(tty1, tty2, pty1, pty2 *os.File) {
var n int
var err error
buf := make([]byte, 1024)
for {
n, err = pty2.Read(buf)
if err != nil {
log.Fatalln(tty2.Name(), "Read Error", err.Error())
}
_, err = pty1.Write(buf[:n])
if err != nil {
log.Fatalln(tty1.Name(), "Write Error", err.Error())
}
}
}
一键复制
编辑
Web IDE
原始数据
按行查看
历史
go开发虚拟串口服务器,vspd.go相关推荐
- 推荐微软Windows 8 Metro应用开发虚拟实验室
Kevin Fan分享开发经验,记录开发点滴 推荐微软Windows 8 Metro应用开发虚拟实验室 2012-07-19 05:23 by jv9, 1940 阅读, 4 评论, 收藏, 编辑 微 ...
- C#开发 虚拟翻书软件
C#开发 虚拟翻书软件 翻书算法,C#图形算法. 模拟真实的翻书效果和声音. 支持图片和视频等素材.
- 虚拟串口VSPD破解版 亲测win10 64可用
虚拟串口VSPD破解版 亲测win10 64可用 点击下载
- 串口服务器控制协议,可二次开发的串口服务器——上海卓岚
可二次开发串口服务器 发布时间:2013-02-11 作者:上海卓岚 浏览量:5236 1.什么是可二次开发串口服务器 普通的串口服务器是一种TCP/IP到串口的透明数据转发的转换器,对于不同的应用, ...
- 虚拟串口 VSPD for window 7/8
前言 最近在试着用C#写串口助手,而电脑上有没有可用的端口, 各种百度得知了虚拟串口VSPD,于是到百度下载了一个. 由于使用的是win8,破解版不可用,便用了试用版,14天过去了, 想卸载了重新安装 ...
- 给iPhone开发虚拟定位是否真的违法???
昨天,我发了一篇<郑重提醒:开发这玩意真的犯法,已经有程序员被抓了!>的文章,里面有一个表达不太恰当的地方我更正一下:判决之前应该叫涉嫌违法,不能叫违法.新闻中相关人员是被依法批准逮捕,目 ...
- 虚拟串口服务器 源代码,进行ARM开发调试用的开源虚拟串口软件(有源代码)
好用的开源虚拟串口软件,有源代码,超值.安装方法见压缩包内的ReadMe.txt. ComEmulDrv serial port bridge driver ===================== ...
- 如何使用 OpenCV 开发虚拟键盘
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 介绍 OpenCV 是最流行的计算机视觉任务库,它是用于机器学习. ...
- 怎么通过media foundation将图像数据写入虚拟摄像头_千倍成本压缩!特斯拉开发虚拟激光雷达,替代最贵自动驾驶传感器...
「谁用激光雷达,谁完蛋!」 在去年特斯拉举办的 Autonomy Day 上,特斯拉 CEO Elon Musk 言辞激烈地炮轰激光雷达. 「昂贵的传感器是不必要的,这就像是一大堆昂贵的附属品.」 「 ...
最新文章
- leetcode算法题--调整数组顺序使奇数位于偶数前面
- Summation Order
- JavaScript匿名函数以及在循环中的匿名函数
- linux docker导入镜像,Docker镜像的导入和导出
- electron 打包后 __static_electron开发客户端注意事项(兼开源个人知识管理工具“想学吗”)...
- pcf8563c语言程序,PCF8563驱动程序(C语言版)
- pythongui项目实例_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...
- 人脸识别7-人脸图片相似度
- HTML——1.Sublime快捷键、HTML常用标签
- JavaScript中的文档碎片
- linux怎么踢普通用户,Linux系统管理员踢用户的方法
- 如何查看云服务器的磁盘空间大小?
- 支持同步的Todo软件
- 【Java】23 函数式编程
- [转]一个人生活,如何摆脱孤独提升幸福感?
- 考研英语单词-近义词分类-Second Day
- 解决ERROR 1109 (42S02): Unknown table 'xxx' in MULTI DELETE
- ## 微信web开发者工具网络连接失败解决办法,基本百分百成功
- MySQL数据库关于read_rnd_buffer_size参数
- 淘宝API应用调用官方买家信息数据
热门文章
- PS出现“不能完成存储为命令,因为没有足够的内存RAM” 设置性能时“要求96和8之间的整数。已插入最接近的数值”
- Scratch(三):跳一跳
- 利用photoshop cs5新增功能之“智能填充
- Newstart HA进阶
- 分销商城系统开发应用概述详解
- 信奥一本通2071题
- C#使用iTextSharp合并pdf,添加页码
- JS获取json子项/数组的个数/长度
- 底层啊底层,你究竟是什么?
- PS安装出现浏览器或操作系统不支持以及需要登录的处理方式