串口

21.python通过pyserial读写串口--2013-06-02

拟墨画扇 提交于 2020-04-14 04:42:17
【今日推荐】:为什么一到面试就懵逼!>>> 因为有个需要用有源RFID搞资产管理的项目,需要用python读取读卡器的串口内容。于是装了pyserial模块,用了下很方便,整理下常用功能 一、 为了使用python操作串口,首先需要下载相关模块: 1. pyserial ( http://pyserial.wiki.sourceforge.net/pySerial ) 2. pywin32 ( http://sourceforge.net/projects/pywin32/ ) 2,十六进制显示 十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCII码,然后将ASCII码值再转换成十六进制数显示出来,这样就可以显示特殊字符了。 在这里定义了一个函数,如hexShow(argv),代码如下: [python] view plain copy import serial def hexShow(argv): result = '' hLen = len(argv) for i in xrange(hLen): hvol = ord(argv[i]) hhex = '%02x' %hvol result += hhex+ ' ' print 'hexShow:' ,result t = serial.Serial( 'com12' , 9600 ) print t.portstr

STM32串口如何代码实现更高效的接收消息

半世苍凉 提交于 2020-04-09 20:23:41
这段时间一直在研究多旋翼飞行器,以及其它的事情,博客好外没更新,再不坚持怕真荒废了哦。 在上篇简单实现MAVLink协议的解析,并演示按照设计好的命令执行对应的事件处理,以及又加入 CRC校验,实现更稳定的通信,但在上文结束时也提到当对一个包进行解析及对应 事件 处理时,是不能接收新的数据,直到事件处理完成,Msg_Rev.Get 状态设置为 RECEIVING 后方能再接收新的数据。这时,当事件处理需要一定时间,而又有新的数据不断发送过来时,很容易造成数据丢失现象。 如何提高串口通信效率,并避免丢包现象了? 为提高效率,首先想到采用DMA方式,然而考虑下发现,接收的数据包是不固定的;并且即使采用DMA,若MAVLink接收缓存仍设计成只接收一条消息大小,丢包问题仍然还是会有滴。 这样就想 有没方法软件来实现,就相 到如果开辟一个缓存空间,不断接收的数据都放到那儿,而包的解析处理函数可从这里面依次取出一定数据,来作处理。这样只要设计比较合理,因软件阻塞造成的丢包现象就容易解决了。那么要设计一个怎样的缓存呢 ? 其实很容易想到队列(先进先出的特性),而为了更有效且合理的利用空间,又就会想到环形队列这种数据结构 。 首先是其数据结构设计,以及插入删除操作,不多说,如下代码: #define MAX_QUEUE_LEN (4096) // 4K #define RW_OK 0

STM32串口如何代码实现更稳定的接收消息

好久不见. 提交于 2020-04-09 12:13:28
在 《STM32串口向世界问好》 介绍过如何发送消息,那么又如何接收消息呢? 也很简单,只需要配置好串口接收,配置好中断,并在串口中断函数里面进行数据接收就可以了。通用配置代码如下: /** * @brief 初始化IO 串口1 * @param bound:波特率 * @retval None */ void USART1_Debug_Init(u32 bound) { //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; assert_param(bound >0 && bound <= 256000); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); USART_DeInit(USART1); //复位串口1 //USART1_TX PA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure

STM32串口之空闲中断

泪湿孤枕 提交于 2020-04-06 13:44:38
NBiot模块一般都是串口接口,使用AT指令集,对接中国移动onenet平台。先用串口助手去测试,流程测试OK之后需要在MCU上重新写一遍。 STM32 串口 IDLE 中断 IDLE其实是空闲的意思。IDLE中断叫空闲中断,不叫帧中断。那么什么叫空闲,怎么定义空闲呢?在实际发送数据的时候,比如一串字符串,我们会采用如下方式发送 void uart1_putc(char dat) { SBUF = dat; while (!TI); TI = 0; } void uart1_puts_n(char *str){ while (*str) uart1_putc(*str++); } void uart1_puts_n("i am handsome"); 其实发送的两个字符之间间隔非常短,所以在两个字符之间不叫空闲。空闲的定义是总线上在一个字节的时间内没有再接收到数据,空闲中断是检测到有数据被接收后,总线上在一个字节的时间内没有再接收到数据的时候发生的。 而总线在什么情况时,会有一个字节时间内没有接收到数据呢?一般就只有一个数据帧发送完成的情况,所以串口的空闲中断也叫帧中断。 要怎么开启帧中断呢? 其实其他串口配置不用改变,只需要在开启串口接收中断的时候加上一句话就Ok。 USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接收中断

linux 下串口编程VTIME和VMIN的设置

自闭症网瘾萝莉.ら 提交于 2020-04-06 04:06:28
VTIME定义要求等待的时间量(取值不能大于cc_t)。 VMIN定义了要求等待的最小字节数。 options.c_cc[VTIME] = X;   //设置从获取到1个字节后开始计时的超时时间 options.c_cc[VMIN] = Y;   //设置要求等待的最小字节数 在原始模式下对read()函数的影响: 1、X=0,Y!=0。函数read()只有在读取了Y个字节的数据或者收到一个信号的时候才返回; 2、X!=0,Y=0。即使没有数据可以读取,read()函数等待X时间量后返回; 3、X!=0,Y!=0。第一个字节数据到时开始,最先满足收到Y个字节或达超时时间X任意一个条件,read()返回; 4、X=0,Y=0。即使读取不到任何数据,函数read也会立即返回。 示例: 通过串口连ID卡读卡器,要求读串口至少收6个字节数据立即返回,可以将串口的上述两个设置项设置如下: options.c_cc[VTIME]=0; options.c_cc[VMIN]=6; 来源: https://www.cnblogs.com/andtt/archive/2011/08/19/2145639.html

关于4G转wifi——TCP转串口——串口透传wifi模块方案定制的详解

戏子无情 提交于 2020-04-02 16:28:17
随着现在信息化的高速发展,网络信息的需求量大增,在移动的4G流量的场合比如汽车上实现WiFi网络覆盖,户外wifi网络覆盖需求下,4G流量已经明显不够用,而网线到达的成本比较大,难以管控。在这市场痛点的需求下,从而衍生出了4G流量转WiFi网络覆盖——4G转wifi路由模块。 4G 路由器是一款工业物联网高速路由器,全线兼容4G/3.5G/3G/2.5G网路,旗舰级配置、工业级防护、宽温设计,可轻松组建高速、稳定的无线传输网络,利用公用LTE网络为用户提供无线长距离数据传输功能。 以下为大家介绍BOJINGnet博晶网络4G转wifi路由器模块的工作原理与功能: ◆ 4G LTE转WiFi或网口,支持移远EC20 4GLTE模块通电插上SIM卡即可上网 ◆ DTU>串口数据透传,即把MCU串口数据转成tcp协议发送到服务器,支持tcp/MQTT协议两种服务器类型;可实现ZigBee智能网关>蓝牙智能网关>LORA智能网关>Z-wave智能网关 ◆ web页面可以修改设备WiFi名称与密码及相关配置 ◆ WiFi支持AP模式或STA模式,STA模式可通过web页面配置连接到WiFi路由器并支持AP模式与STA模式共存;也可通过http协议进行配置 ◆ 双网口支持WAN口与LAN口模式10M/100M自适应,可实现网口转WiFi或WiFi转网口 ◆

北斗时间服务器在靶场的应用

拜拜、爱过 提交于 2020-03-29 09:19:16
北斗时间服务器在靶场的应用 关键词:北斗时间服务器,时间服务器 在地域辽阔的导弹和航天试验中,为了实现对、航天器的测量和控制,需要有多台设备和系统,这样的工作必定需要统一的时间。因此在军事领域、航天领域、通信领域、交通领域、电力领域、金融领域等方面时统设备和北斗时间服务器得到了普遍的应用。本文对靶场的系统组成及时统设备或北斗时间服务器的常用授时方式和接口进行简单的介绍。 靶场是一个多学科、多层次和高新技术密集的场所。从系统工程的角度来说。它由许多工程学科纵横交织构成了一个完整的大系统,这个大系统工程可以分成六个系统:测试发射系统、控制系统、通信系统、指挥调度系统、大地测量及气象勤务保障系统、供电运输系统等。靶场时统是为靶场通信系统、测量控制系统、指挥控制系统和发射测试系统服务的,是靶场武器测试的重要保障。靶场对靶场时统提出了以下任务:定时、校频、传输发射信号(或起飞信号)、输出信号、记录等。 通常靶场北斗时间服务器用户部分可分为总站、分站和终端三部分。 北斗时间服务器和用户设备之间的输出输入接口也是授时误差的一大来源,因此设计时统设备需要综合考虑接口问题。靶场时统设备通常用的用户输出方式有串口时间报文输出、脉冲输出、时间编码输出和网络对时输出等。对于没有约定用户输出的情况,需要考虑用户接口通用性。 时间服务器串口时间报文输出即是通过串口方式传输双方约定的时间信息,如年月日分秒

Xilinx Zynq-7000 PL端Kintex-7架构可编程逻辑资源,串口、RJ45千兆以太网口

ぐ巨炮叔叔 提交于 2020-03-26 16:57:29
3 月,跳不动了?>>> CPU CPU为 Xilinx Zynq-7000 SOC,兼容XC7Z0 35 /XC7Z0 45 /XC7Z 100 ,平台升级能力强,以下为 Xilinx Zynq-7000 特性参数: 串口 开发板具有 1 路U SB TO UART复合 串口C ON5 ,PS端和PL端均可配置,通过USB转双串口芯片CP2105与 Micro USB 物理接口CON 5 连接。可以使用 Micro USB 线连接PC进行调试,连接后,可以在PC上看到一共挂载了2个串口设备。使用CP2105的好处是,只需一根USB连接线,就实现了2路串口。各 引脚定义如下图所示: RJ 45 千兆 以太网口 板载自适应R GMII 10/100/1000M网络接口,RJ45连接器内部已经包含耦合线圈,因此不必另接网络变压器,使用普通的直连网线即可连接本开发板至路由器或者交换机。网络接口是 CON7 ,接口 的引脚定义, 如 下图所示: 来源: oschina 链接: https://my.oschina.net/u/4169033/blog/3211966

串口服务器配置

不想你离开。 提交于 2020-03-26 15:29:54
串口服务器配置 中的 P2P 联网是一种串口联网的新技术。与传统的基于 IP 加端口的 TCP/IP 连接方式不同, P2P 技术基于设备 ID 进行通信。用户只需要输入 卓岚 P2P 设备的 ID 即可和处于世界各地的 串口 设备通信,无需关心设备处于 局域网 或外网,也不需要做端口映射和无需关心 IP 变化。 P2P 是一种分布式的网络结构,不同于基于中心服务器转发的网络结构。 上海卓岚提供的 P2P 产品包括芯片 ZLAN1003N 、以太网 ZLAN5103N 、 Wifi ZLAN7144N 、 3G 、 4G ZLAN8303N-7 等联网介质,可以满足全方位的联网方式。提供有基于 PC 机的虚拟串口、 TCP/IP 连接两种连接模式,以及与安卓、 IOS 系统的开发软件和 Demo 。可以通过认证和用户名方式对于 ID 的访问权限进行管理。 在实现 P2P 远程访问的时候,可以实现多人同时访问一个设备,且每个人的访问数据互不干扰,即实现多主机功能,也可以使用 P2P 实现 Modbus 网关。 N2N 类产品可以实现内网的 NAT 映射,即通过 N2N 产品作为代理来访问内网的某个作为 TCP 服务器的设备。 此技术 国家发明专利技术。 使用 ID 通信,随时随地联网。 通讯快速,设置简单方便,跨网通讯轻松搞定。 来源: https://www.cnblogs.com

python 对串口的操作

天涯浪子 提交于 2020-03-21 07:12:38
我用的是“线程轮寻”方式。 就是打开串口后,启动一个线程来监听串口数据的进入,有数据时,就做数据的处理(也可以发送一个事件,并携带接收到的数据)。 我没有用到串口处理太深的东西。 客户的原程序不能给你,不过我给你改一下吧。 里面的一些东西,已经经过了处理,要运行,可能你要自己改一下,把没有用的东西去掉。 我这里已经没有串口设备了,不能调了,你自己处理一下吧,不过基本的东西已经有了。 ================================================================= #coding=gb18030 import sys,threading,time; import serial; import binascii,encodings; import re; import socket; class ReadThread: def __init__(self, Output=None, Port=0, Log=None, i_FirstMethod=True): self.l_serial = None; self.alive = False; self.waitEnd = None; self.bFirstMethod = i_FirstMethod; self.sendport = ''; self.log = Log; self