串口

robot 的 串口操作

烈酒焚心 提交于 2020-03-21 07:10:49
1、关闭串口 如果没有创建串口,关闭串口就会报错 SerialLibrary.Close Port SerialLibrary.Delete All Ports Run Keyword And Ignore Error 可以用该命令来忽略错误 2、添加串口 SerialLibrary.Add Port ${port} baudrate=${baudrate} #baudrate, bytesize, parity, stopbits,timeout, xonxoff, rtscts, write_timeout, dsrdtr and inter_byte_timeout. write_timeout=120.1 3、打开串口,获取串口返回的字符编码 SerialLibrary.Open Port ${port} ${a} SerialLibrary.Get Encoding log ${a} 4、往串口写如数据,注明输入字符的编码 SerialLibrary.Write Data \n UTF-8 5、刷新端口 SerialLibrary.Flush Port sleep 1 Flush port so that all waiting data is processed. 刷新端口,以便处理所有等待的数据。 6、读取串口输出数据 SerialLibrary.Read All

Python中serial的使用---树莓派

家住魔仙堡 提交于 2020-03-21 07:10:34
一、概述 pyserial模块封装了对串口的访问。 二、特性 在支持的平台上有统一的接口。 通过python属性访问串口设置。 支持不同的字节大小、停止位、校验位和流控设置。 可以有或者没有接收超时。 类似文件的API,例如read和write,也支持readline等。 支持二进制传输,没有null消除,没有cr-lf转换。 三、系统要求 python 2.3及以上版本,包括py3k。 四、使用方法和实例 1、导入pyserial模块 import serial 2、打开串行口的范例 // 打开串口0, 9600,8N1,连接超时0.5秒 import serial ①选择设备 ser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5) #使用USB连接串行口 ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5) #使用树莓派的GPIO口连接串行口 ser=serial.Serial(1,9600,timeout=0.5)#winsows系统使用com1口连接串行口 ser=serial.Serial("com1",9600,timeout=0.5)#winsows系统使用com1口连接串行口 ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5)

串口中断方式的发送过程是怎么回事?

谁都会走 提交于 2020-03-19 23:03:21
串口中断方式的发送过程是怎么回事? 有人问过 这个问题 : “用串口中断接收比较好理解,只要接收缓存接收到数据,标志位就会置位,然后进入中断服务程序读取接收缓存中的数据,但是在发送时,应该是在数据发送出去之后发送标志位才会置位(我是msp430单片机),那么此时等数据发送出去之后进入中断又有什么意义呢?到底如何通过串口中断来发送数据呢?” 通过阅读 STM32 官方库的代码,我找到了答案。 中断发送方式的基本过程是: 每发送一个字节,该字节发送完毕引发中断,中断处理程序再发送下一个字节……直到发送完成。 这里有两个细节问题需要注意: 第一个字节是怎样发送的?因为发第一个字节之前,并没有发送字节完成所触发的中断,那第一个字节怎么被发送出去?这关系到中断在硬件层面的触发方式:如果是电平触发的中断,在中断式发送函数中会使能相应的中断,因为发送缓冲区为空,其所处的电平状态就在中断功能被使能后会直接触发中断,导致第一个字节在中断处理函数中被发送出去;如果是电平跳变触发的中断,为了引发中断,只好把第一个字节在中断式发送函数中“手动”发送出去,由此引发一个中断的“多米诺”效应,把后面的字节依次发送出去。参考: https://www.lpcware.com/content/forum/uart-tx-interrupt-should-i-put-least-one-byte-tx-fifo

RS232,RS422,RS485接口的区别

≡放荡痞女 提交于 2020-03-18 14:43:43
1,什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于 RS232 的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS- 232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit

蓝牙打印机的连接方法

我的未来我决定 提交于 2020-03-17 07:42:04
一般的手持蓝牙打印机都使用串口协议与主机通信,实现打印。WINCE提供了查找,配对及与蓝牙设备建立串口连接的界面。但那个界面不是很友好,优其对非专业人士来说太过复杂。下文讲述自行开发这样一个程序的方法。 1,准备工作。 蓝牙相关的功能需要使用到socket函数库,所以程序先要调用WSAStartup来初始化socket库。 2,查找蓝牙设备。 调用 WSALookupServiceBegin来启动一次搜索。 然后反复调用WSALookupServiceNext,直到找到想要的设备,或者此函数失败。 最后调用 WSALookupServiceEnd结束本次搜索过程。 示意代码如下。 WSADATA wsd; HANDLE hLookup; ZeroMemory(&wsaq, sizeof(wsaq)); wsaq.dwSize = sizeof(wsaq); wsaq.dwNameSpace = NS_BTH; wsaq.lpcsaBuffer = NULL; iResult = WSALookupServiceBegin (&wsaq, LUP_CONTAINERS, &hLookup); while(1) { CHAR buf[4096]; LPWSAQUERYSET pwsaResults = (LPWSAQUERYSET) buf; ZeroMemory

读书笔记 串口

旧城冷巷雨未停 提交于 2020-03-16 17:52:27
1,51 C语言中数据类型加关键字 code 会被存在flash ,不加会被存在SDRAM。 2,数组不初始化会随机分配一个地址,数组的值 为原地址存储的值。 3,c不支持把数组当做一个整体来赋值,也不支持用花括号列表进行赋值,初始化是可以的啊。 来源: https://www.cnblogs.com/321waiting/p/12505205.html

STM32F0_HAL库驱动描述——基于F1的USART串口IT中断实现解析

给你一囗甜甜゛ 提交于 2020-03-15 18:44:36
从原子F103 HAL库基础串口例程来看HAL程序结构; 从main函数开始,首先是HAL库两个函数的初始化: HAL_Init(); Stm32_Clock_Init(RCC_PLL_MUL9); 解析HAL_Init() 分为四个部分: A:启用FLASH预取缓存区; B:设置中断组优先级(由于F0是M0系列的,因此没有组优先级一说); C:配置SYSTICK时钟; D:初始化低等级的硬件; HAL_StatusTypeDef HAL_Init(void) { /* Configure Flash prefetch */ #if (PREFETCH_ENABLE != 0) #if defined(STM32F101x6) || defined(STM32F101xB) || defined(STM32F101xE) || defined(STM32F101xG) || \ defined(STM32F102x6) || defined(STM32F102xB) || \ defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ defined(STM32F105xC) || defined(STM32F107xC) /* Prefetch

串口线接Linux设备U盘安装系统

北城余情 提交于 2020-03-13 09:34:49
Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x22 (or later) [ 3.271907] Device 'efifb.0' does not have a release() function, it is broken and must be fixed. [ 4.485038] i8042: No controller found    出现此问题: 字符模式console usb串口安装centos U盘安装镜像路径也是需要指定的,本文来自/dev/sda4 U盘 进入BIOS页面: setparams 'Install CentOS 7' linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:/dev/sda4 console=tty0 console=ttyS0,115200 initrdefi /images/pxeboot/initrd.img 来源: https://www.cnblogs.com/zhou1/p/12484406.html

C#串口操作实用类

风格不统一 提交于 2020-03-13 00:28:58
做工业通信有很长时间了,特别是串口(232/485),有VB/VC/C各种版本的串口操作代码,这些代码也经过了多年的现场考验,应该说是比较健壮的代码,但是目前却没有C#相对成熟的串口操作代码,最近用Moxa的设备开发基于WinCE5.0的串口操作代码,所以就扩充完善了一下串口操作,特别是SendCommand函数,这是我比较常用的主从通信代码,不喜欢用事件或线程接数据,在规定的超时时间内直接循环判断要接收的数据。 下面是具体的代码: public class PortData { public event PortDataReceivedEventHandle Received; public event SerialErrorReceivedEventHandler Error; public SerialPort port; public bool ReceiveEventFlag = false ; // 接收事件是否有效 false表示有效 public PortData( string sPortName, int baudrate,Parity parity,SerialInterface.SerialMode mode) { port = new SerialPort(sPortName, baudrate, parity, 8 , StopBits.One);