串口

通用数据采集平台,从架构到代码

左心房为你撑大大i 提交于 2019-11-29 19:24:44
需求场景还原 国内某二线城市某科技公司,项目、产品繁多,软硬件通吃。硬件大牛H,软件新人S,研发BOSS: H:BOSS,这两天刚刚搞出个采集电参数的模块,能不能安排人做个简单的测试程序,就是一个串口,电脑上看一下数据就行,很简单的; BOSS:可以,小S,你把老H这个功能实现下,在我原来的那个XXX串口程序基础上改一下就行了; S:我在整个网站,没时间呀? BOSS:这个简单,改一下显示就行了; S:行,听你的(无奈!!) 然后S把BOSS原来的程序COPY一份,开改打开串口--->收数据---->分析数据--->显示--->关闭串口,丫的还要改程序名字等等 ... X月过后: H:BOSS,我整了个XX控制器,需要用电脑软件控制一下就行,就发两个控制指令,然后看到控制结果就行,很简单的; BOSS:老H,你干的不错呀,小S,你有空把这个控制实现一下,就在你上次那个采集程序基础上改一下就行了; S:我上次那网站还没整完呀?客户吹的紧呀? BOSS:这个简单,就两个控制指令,算你半天工作量 S:(内心:简单?简单$%$$####%^) 然后S把原来的采集程序COPY一份,开改打开串口--->发控制指令--->收数据---->分析数据--->显示--->关闭串口,丫的还要改程序名字等等 ... 又是X月过后: H:BOSS呀,有个客户那边说我们的协议不好使,要用国标的协议

[小小Pi] USB/USB 串口/Wiring

那年仲夏 提交于 2019-11-29 18:44:37
USB Serial 碎碎念... ❤ 树莓派碎碎念 ❤ Arduino ❤ AVR Bootloader~烧烧烧 ❤ ATmega8U2/ATmega16U2~串口烧烧烧 ❤ USBasp Firmware~串口烧烧烧 蕊片 -- PL2303, FT232R, FT4222H USB | UNo to TTL | PL2303 | FT232 | XBee Adapter | ISP下载器 | JTAG仿真器 | Wiring ※ USB 蕊片 ※ USB 母 5V D- D+ G 公 G D+ 5V A 1 2 3 4 上 B 1 2 上 4 3 下 MINI 1 2 3 x 4 下 ※ PL2303 - Xxxxx , PL2303 驱动程序 * USB 1.1 ※ FT232R - USB UART IC , FTDI VCP Driver (Virtual COM Port), D2XX ( direct access to USB through DLL) * USB 2.0, SSOP28/QFN32 ※ FT4222H - USB to Quad SPI / I2C Bridge IC , FTDI CDM Driver * USB 2.0, QFN32 * support 4 channel SPI Slave * SCK can support up to

Hi3516EV200使用UART1笔记

假如想象 提交于 2019-11-29 18:40:26
Hi3516EV200使用UART1笔记 业务中需要用到UART1,使用命令 ls /dev/ttyAMA* 能看到对应的串口。可是用 cat /dev/ttyAMA1 报错,如下: ~ # ls /dev/ttyAMA* -l crw------- 1 root root 204, 64 Jan 1 00:00 /dev/ttyAMA0 crw-r--r-- 1 root root 204, 65 Jan 1 00:00 /dev/ttyAMA1 ~ # cat /dev/ttyAMA1 cat: can't open '/dev/ttyAMA1': No such device or address ~ # 很像是没那个设备点节,可上面明明看到了。先查一下IO复用引脚的配。 原理图中用的是10,9两个引脚,如图: 再看配置寄存器,对应的文档为: xxxV200R001C01SPC010_ReleaseDoc\zh\00.hardware\chip\Hi3516EV200\Hi3516EV200_PINOUT_CN.xlsx 用devmem可以直接操作寄存器,指令为: devmem 0x112C0070 32 0x00001002 #选为UART1_RXD devmem 0x112C0074 32 0x00001002 #选为UART1_TXD 再试 cat /dev

qt串口

可紊 提交于 2019-11-29 16:54:59
qt串口通信: #ifdef _TTY_POSIX #include "posix_qextserialport.h" #define QextBaseType Posix_QextSerialPort #else #include "win_qextserialport.h" #define "QextBaseTypeport.h" #define QextBaseType Win_QexSerialPort #endif QextSerialBase类中 QueryMode读取串口的方式: Polling :建立定时器 读取串口信息 EventDrrivent: 一旦有数据发出readyRead()信号 设置串口为事件驱动模式 mycom = new Win_QextSerialPort("COM1",QextSerialBase::EventDriven); mycom->open(QIODevice::ReadWrite); mycom->setBaudRate(BAUD9600); mycom->setDataBits(DATA_8); mycom->serParity(PAR_NONE); mycom->setStopBits(STOP_1); mycom->setFlowControl(FLOW_OFF);数据流控制 mycom->setTimeout(500);

PComm串口开发

…衆ロ難τιáo~ 提交于 2019-11-29 13:39:06
https://blog.csdn.net/u011430225/article/details/51496456 https://blog.csdn.net/eit520/article/details/7861029 关于串口编程的,有用API的,有用mscomm的。 其实用了Pcomm lite,很多问题都不会碰到,只需要打开串口,建个线程收数据,然后只需要关注自己要收发的数据就行了。 PComm Lite是家叫moxa的公司出的,做了几十年工业串口卡、串口服务器之类设备了。提供的pcomm易用性、可靠性久经考验。 下载地址:http://www.moxa.com/product/download_pcommlite_info.htm 目前最新版是Version 1.5 Released 2010-09-20 支持XP/win7, 32/64bit的库都有,开发环境支持VC/VB/Delphi。 注意可以会搜到另外一个Version 2.6. Released Jul 8, 2008是WIN9x/NT4用的,不要看版本号高下错了。 国外工业上还有很多老系统在用。 用起来很简单,pcomm.h/pcomm.lib两个文件复制到项目目录并引用,pcomm.dll丢到windows\system32下。 整个库包含50多个函数,最常用的也就10来个: 打开、关闭、设波特率的:sio

Pyboard基本功能---UART

我与影子孤独终老i 提交于 2019-11-29 12:26:16
UART UART(通用异步收发传输器)的简称,在单片机和嵌入式系统中,串口(UART)一直都是非常重要的外设。虽然串口的速度并不快,但是因为它使用简单(串口可能是两个芯片之间传输数据最简单的方式),占用软件和硬件资源少,所以在通信、控制、数据传输、仿真调试等许多方面有非常广泛应用。很多设备或者模块甚至都会提供专用的串口接口用于通信和控制,如GPRS模块、蓝牙/WiFi透传模块等。UART使用一个GPIO做发送,一个GPIO做接收,没有单独的时钟信号。收发双方需要先约定好相同的波特率、数据位、校验位、停止位等参数才能正常通信,所以也叫做异步串行总线。 1.获取UART类的方法 >>> from pyb import UART >>> help(pyb.UART) object <class 'UART'> is of type type init -- <function> deinit -- <function> any -- <function> read -- <function> readline -- <function> readinto -- <function> write -- <function> irq -- <function> writechar -- <function> readchar -- <function> sendbreak --

串口 PLC 编程FAQ

时光总嘲笑我的痴心妄想 提交于 2019-11-29 10:32:34
1. 不要频繁打开关闭串口,这是个耗时的过程,如果多个工位都争夺串口资源,则会出现卡顿,死锁。 2. PLC 的读写估计100毫秒,如果并发的写,有的写操作会失败,需要Delay或重试。 3. 通常一个工位的某个操作(启动/停止/暂停/状态/) 都会用一个字节的一个位来标识,你可以按字节用批量写入/读取(8的倍数),这样速度快很多。 4. 笔记本电脑没COM口,可以买USB转COM母口的线。 5. 多线程如何分配(按com口,PLC读一个,写一个,UI一个)??? 6. PLC,配一个小触摸屏,可以直接二次开发(只针对小数据量, 数据量大不好处理。多串口也不好处理) 来源: https://www.cnblogs.com/zitjubiz/p/11515635.html

详解RS232、RS485、RS422、串口和握手

牧云@^-^@ 提交于 2019-11-29 04:54:05
详解RS232、RS485、RS422、串口和握手 2019年08月06日 16:20:08 不脱发的程序猿 阅读数 1423更多 分类专栏: 技术分享 程序人生 通信 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/m0_38106923/article/details/98615747 目录 1、RS232基础 1.1、电气特性 1.2、连接器的机械特性 1.3、传输电缆 1.4、链路层 1.5、传输控制 1.6、RS-232标准的不足 2、RS485基础 2.1、RS-485 的电气特性 2.2、传输速率与传输距离 2.3、网络拓扑 2.4、连接器 3、RS422基础知识 4、串口与握手基础知识 4.1、串口基础知识 4.1.1、波特率 4.1.2、数据位 4.1.3、停止位 4.1.4、奇偶校验位 4.2、握手基础知识 4.2.1、软件握手 4.2.2、硬件握手 4.2.3、XModem握手 1、RS232基础 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口

嵌入式linux4412多路复用式串口操作(select和poll实现方法)

时光总嘲笑我的痴心妄想 提交于 2019-11-28 22:47:44
1实验目的 通过编写多路复用式串口读写,进一步理解多路复用函数的用法,同时更加熟练地掌握LINUX设备文件的读写方法。 2、实验内容 本实验中,实现两台机器(宿主机和目标板)之间的串口通信,而且每台机器均可以发送数据和接收数据。除了串口的设备名称不同,两台机器上的程序基本相同。 首先,程序打开串口设备文件并进行相关配置,调用select()函数或poll()函数,使它等待从标准输入(终端)文件中的输入数据及串口设备的输入数据。 1、如果有标准输入文件上的数据,则写入到串口,使对方读取。 2、如果有串口设备上的输入数据,则将数据写入到普通文件中。 select函数 LINUX系统提供select函数来实现 多路复用输入/输出模型 ,原型: int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout); 参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的 可读文件描述符 的集合, 可写文件描述符 的集 合及 异常文件描述符 的集合。struct timeval结构用于描述一段时间长度,如果在这个时间内,需要监视的描述符没有事件发生则函数返回,返回值为0。 1.timeout=NULL( 阻塞 :select将一直被阻塞

STM32F107的串口IAP跳转功能实现过程笔记

给你一囗甜甜゛ 提交于 2019-11-28 22:43:58
工程从CAN接口方式转换为USART接口,IO口,时钟,中断,数据缓存等都做好了,但是USART接受数据老是不对,检查了波特率等设置,都没问题。 启动定时器测试,发现原因是芯片工作时钟频率不对。主频率根本就不是72M.而是比72M慢好几倍。 USART3_Configuration()应该不会出现问题,估计是时钟出现了问题,可是RCC_Configuration()我都是按照固件库函数来的怎么会出错呢?我从stm32f10x_rcc.h源头开始找起,发现默认初始化时钟函数SystemInit()里面有有问题,分频设置当然不会出现问题,问题出在时钟选择上,105/107属于互联网产品,Preprocessor Symbols用的是STM32F10X_CL,固件很多地方会针对这个STM32F10X_CL做出条件编译,其中SystemInit()默认选择外部时钟HSE,HSE的设置值HSE_VALUE在stm32f10x.h中宏定义默认是25MHz,我的板子用的是8MHz晶振,当然那里要改,所以我注释了原来,把8MHz加上。 #if !defined HSE_VALUE #ifdef STM32F10X_CL // #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */