串口

MAC串口调试助手-史上最全的

邮差的信 提交于 2019-12-09 09:01:21
本次主要讲解MAC上进行串口了调试,难免我们在软硬件开发的时候,需要用助手进行接收/发送等。也是最近公司需求,就安排了做这块,协议如下: 一:ORSSerialPort通信 1,ORSSerialPort是一个使用方便的Objective-C串口库,用于OS X系统下的串口通信。 2、为什么要用ORSSerialPort? (1)开源 ORSSerialPort基于MIT软件协议,使用者可以根据自己的需求进行修改和使用。 (2)可以监听数据的接收/响应以及串口的断开/接入等事件。 (3)Key Value Observing ORSSerialPort的很多属性使用了Key-Value Observing机制,当指定属性被修改后,对象就会收到通知。 3,具体的使用 总的来说,可将ORSSerialPort编译成framework,然后加入工程中。也可以直接将ORSSerialPort的源码(ORSSerialPort/Source)copy到工程里。推荐使用后者,可以对代码进行修改和调试,也可以清晰地了解串口通信程序编写的过程。 二:peertalk 1,一个基于usbmuxd服务的开源代码,可以实现 iPhone 与 Mac 通信。 2,开源项目peertalk 就是一个完整的使用usbmuxd方式实现iPhone是 app跟Mac 上的app进行TCP通信的例子。因为Mac

10、PWM

偶尔善良 提交于 2019-12-07 17:57:37
定义 PWM(Pulse Width Modulation),脉冲宽度调制。 脉冲:方波,频率(freq) 宽度:高电平的宽度,占空比(duty) PWM的模式分为1和2 PWM1:TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态 PWM2:TIMx_CNT<TIMx_CCR1,通道1便为无效状态,否则为有效状态 TIMx_CNT由TIM_TimeBaseStructure.TIM_Period决定 TIMx_CCR1由TIM_SetComparex(x:1、2、3、4)函数决定 有效状态由TIM_OCInitStructure.TIM_OCPolarity决定 其中频率值由计数值决定,占空比由比较值决定 例 #include "stm32f4xx.h" #include "sys.h" static GPIO_InitTypeDef GPIO_InitStructe; static USART_InitTypeDef USART_InitStructe; static NVIC_InitTypeDef NVIC_InitStructe; static TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructe; //串口初始化 void usart_init(uint32_t baud) { //使端口A通电 RCC

11、串口

泄露秘密 提交于 2019-12-07 17:55:51
定义 串口通信是一种设备间非常常用的串行接口,以比特位的形式发送或接收数据,电子工程师经常使用这种方式来调试数据。 来源: https://www.cnblogs.com/lp06/p/12002769.html

c#操作串口类

陌路散爱 提交于 2019-12-07 17:34:29
先放上串口的一个类,自己编写的,觉得这样好用些。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Collections; using System.IO; using System.Text.RegularExpressions; namespace channel_ratio { public partial class Serial { private SerialPort comm = new SerialPort(); public StringBuilder builder = new StringBuilder();//避免在事件处理方法中反复的创建,定义到外面。接收到的数据 private long receive_count = 0;//接收计数 private long send_count = 0;//发送计数 private bool saveflag = false;/

Linux下的串口设置

爱⌒轻易说出口 提交于 2019-12-07 07:08:16
rs232 是三芯通信,即 DB9 的第 2 引脚 RXD (接收)、第 3 引脚 TXD (发送数据)、第 5 引脚 DG (信号地)。 rs232 是三芯通信, 485 是两芯通讯的, RS-232 串口线 通常 是 DB9--DB9 的 串口通信线, 9 芯 RS-485 数据线 是 双绞线或者屏蔽双绞线, 232 传输距离较近, 485 传输距离比较远, 485 是单工(向)通讯, 232 是双工(向)的。 通信编程都没有区别,都是按照 RS232 编程的,计算机没有 485 接口,需要用一个 232 转 485 的转换器就可以了。 串口的操作一般都通过四个步骤来完成: 1 、打开串口 2 、配置串口:对串口的波特率、数据位、停止位、校验码、等进行设置。 3 、读写串口 4 、关闭串口 在 linux 下编写终端程序时,有规范模式,非规范模式(原始模式特殊的非规范模式)之分。不用于终端,而是在 串口 这种使用情况下,一般设置为原始模式(非规范的一种特殊情况)。但用 read() 函数,希望从 串口 接收指定的数量的字符时,往往接收到的实际字符数,都与指定的不同。如本人用 read ()希望接收 10 bytes 的数据,但实验后发现,分了几次才接收到,俩次接收 2bytes ,两次接收 3bytes 。 查阅相关资料得知: 一般地 串口 的读写模式有直接模式和缓存模式

linux串口编程实例(二)

旧时模样 提交于 2019-12-06 08:44:13
1.串口设置相关的一个接口 int set_opt(int fd,int nSpeed, int nBits, char nFlow, char nParity, int nStop) { struct termios newtio,oldtio; if ( tcgetattr(fd, &oldtio) != 0) { perror("get serial attr failed!\n"); return -1; } bzero( &newtio, sizeof( newtio ) ); newtio.c_cflag |= CLOCAL | CREAD; newtio.c_cflag &= ~CSIZE; switch( nBits ) { case 5: newtio.c_cflag |= CS5; break; case 6: newtio.c_cflag |= CS6; break; case 7: newtio.c_cflag |= CS7; break; case 8: newtio.c_cflag |= CS8; break; default: newtio.c_cflag |= CS8; break; } switch(nFlow) { case 'N': newtio.c_cflag &= ~CRTSCTS; break; case 'H': newtio.c

串口接收一帧数据及解析

点点圈 提交于 2019-12-06 08:13:46
3. 下位机中的数据接收和协议解析 下位机接收数据也有两种方式,一、等待接收,处理器一直查询串口状态,来判断是否接收到数据。二、中断接收。两种方法的优缺点在此前的一篇关于串口通信的文章中详细讨论过。得出的结论是采用中断接收的方法比较好。 数据包的解析过程可以设置到不同的位置。如果协议比较简单,整个系统只是处理一些简单的命令,那么可以直接把数据包的解析过程放入到中断处理函数中,当收到正确的数据包的时候,置位相应的标志,在主程序中再对命令进行处理。如果协议稍微复杂,比较好的方式是将接收的数据存放于缓冲区中,主程序读取数据后进行解析。也有两种方式交叉使用的,比如一对多的系统中,首先在接收中断中解析“连接”命令,连接命令接收到后主程序进入设置状态,采用查询的方式来解析其余的协议。 以下给出具体的实例。在这个系统中,串口的命令非常简单。所有的协议全部在串口中断中进行。数据包的格式如下: 0x55, 0xAA, 0x7E, 0x12, 0xF0, 0x02, 0x23, 0x45, SUM, XOR, 0x0D 其中0x55, 0xAA, 0x7E为数据帧的帧头,0x0D为帧尾,0x12为设备的目的地址,0xF0为源地址,0x02为数据长度,后面接着两个数据0x23, 0x45,从目的地址开始结算累加、异或校验和,到数据的最后一位结束。 协议解析的目的,首先判断数据包的完整性,正确性

STM32CubeIDE使用printf串口打印

北城以北 提交于 2019-12-06 08:09:34
在USART的初始化文件中添加如下代码 #include "stdio.h" /* USER CODE BEGIN 0 */ #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) PUTCHAR_PROTOTYPE { //注意下面第一个参数是&husart1,因为cubemx配置了串口1自动生成的 HAL_USART_Transmit(&husart1, (uint8_t*)&ch, 1, HAL_MAX_DELAY); return ch; } #endif /* USER CODE END 0 */ 来源: https://www.cnblogs.com/tianxxl/p/11970459.html

N76E003双串口无法进UART1中断问题解决办法

邮差的信 提交于 2019-12-06 04:55:30
最近在做有关N76E003的项目,使用到双串口。串口的配置没有特殊要求,最基本的配置 void Uart0_Init(void) { //—————————串口0引脚初始化———————— set_P06; set_P07; set_ES; //enable uart0 interrupt InitialUART0_Timer1(9600); //UART0 Baudrate initial,T1M=0,SMOD=0 } void Uart1_Init(void) { //—————————串口1引脚初始化———————— set_P02; set_P16; set_ES_1; //enable uart1 interrupt InitialUART1_Timer3(9600); } 并配置了中断函数 void SerialPort0_ISR(void) interrupt 4 { if(RI) { /* if reception occur */ clr_RI; /* clear reception flag for next reception */ uart_receive_input(SBUF); } } void SerialPort1_ISR(void) interrupt 15 { if(RI_1) { clr_RI_1; uart1_receive_input