winform与下位机做蓝牙通信时需要注意的问题

winform与下位机做蓝牙通信时需要注意的问题

1.想要实现自动连接蓝牙,就需要像串口自动连接一样,思路是先扫描前N个COM口,通过try,阻塞和定时器搭配尝试打开COM,发握手信号,如果得到正确回复那么端口定位成功!

2.蓝牙模块这里有一个坑,不知道是模块的问题还是一种什么机制,买的一个HC05模块和电脑端首次建立好连接后,电脑会自动为该蓝牙模块分配两个COM口,一个能用,另外一个

不能用,而且卸载后过段时间会重新自动安装,简直成精了!

3.如果多出一个COM也无所谓,关键这多出的一个口还会影响到端口扫描,第一次开机如果winform扫描到这个没用的口,竟然可以open成功,然后尝试给这个口发握手信号,这时候winform界面直接卡死。。。。。强制关掉后再重新按上述步骤来,发现这个口已经open失败了。。。。恶心。

4.其实每次开机端口扫描时,都会出现卡死的情况,程序卡在了串口发送数据出不来。解决方法:winform串口发送数据时的时间溢出timeout一定要设置一个值,这样如果发送超时了

会自动跳出发送函数,这样就不会卡死了,搞定!

转载于:https://www.cnblogs.com/pacexdong/p/11442244.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连接 HC-05 蓝牙模块与 STM32 微控制器的方法如下: 1. 将 HC-05 模块的 VCC 引脚连接到 STM32 微控制器的 3.3V 引脚,将 GND 引脚连接到 STM32 微控制器的 GND 引脚。 2. 将 HC-05 模块的 TX 引脚连接到 STM32 微控制器的 RX 引脚,将 HC-05 模块的 RX 引脚连接到 STM32 微控制器的 TX 引脚。 3. 在 STM32 微控制器上编程,使用串口通信协议与 HC-05 模块进行通信。 以下是一个简单的示例程序,可以将 STM32 微控制器上的字符串发送到 HC-05 模块: ```c #include "stm32f10x.h" void USART1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; /* Enable GPIO clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /* Enable USART clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* Configure USART Tx as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART Rx as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /* USART configuration */ USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /* Enable USART */ USART_Cmd(USART1, ENABLE); } void USART1_SendString(char* s) { while (*s) { while (!(USART1->SR & USART_FLAG_TXE)); USART_SendData(USART1, *s++); } } int main(void) { USART1_Init(); while (1) { USART1_SendString("Hello, World!\r\n"); } } ``` 在使用 HC-05 模块之前,需要在 HC-05 模块上进行一些设置,例如设置蓝牙名称、波特率等。具体操作可以参考 HC-05 模块的说明书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值