QT串口通信
文章目录
- QT串口通信
- 前言
- 一、Pycharm代码
- 二、STM32代码
前言
前几天学了QT,只设计界面并没有用处,于是我便学习了QT的串口通信。
QT有我自己做的界面,写在博客里,可能你也用不了,我就把源码和知识点写一下
一、Pycharm代码
import serial #导入serial
serial=serial.Serial('COM3',115200,timeout=2) #开启串口,设置波特率
if serial.isOpen():print('串口已经打开')
data=b'qcx\r\n' #定义要发送的数据,必须是字节类型的,并且后面要加上\r\n,否则STM32接收不到,这个就是发送qcx,32接收的长度就是3
serial.write(data) #发送
print('发送的数据为',data)
while True:data=serial.read(20) #读取串口接收的数据if data!="b":break
print('接收的数据',data)serial.close() #关闭串口
二、STM32代码
STM32用的是正点原子的串口例程
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"int main(void){ u16 t; u16 len; u16 times&#61;0;delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); uart_init(115200); LED_Init(); KEY_Init(); while(1){if(USART_RX_STA&0x8000){ len&#61;USART_RX_STA&0x3fff;if(len&#61;&#61;3)LED1&#61;0;for(t&#61;0;t<len;t&#43;&#43;){USART_SendData(USART1, USART_RX_BUF[t]);while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!&#61;SET);}USART_RX_STA&#61;0;}else{times&#43;&#43;;if(times%30&#61;&#61;0)LED0&#61;!LED0;delay_ms(10); }} }