头像-144023

donatello

  • 广东省
  • 单片机
  • 计算机网络

个人成就

获得 765 次赞

帮助过2489人

TCP客户端尝试连接服务器是否阻塞操作

       如题,计划使用QT编写TCP客户端程序,目前方案是人工建立连接,即输入IP地址和端口号,按下按钮连接,现在计划做个优化功能,做个定时器进行自动连接。请问,TCP客户端尝试与服务器建立连接这个操作是否阻塞操作?若在分给程序的CPU资源有限的情况下进行重复尝试连接,会拖慢程序吗?

QT中的std::string

       如题,在QT中使用字符串类,通常是用QString类,但是QString类是16位长度的字符串类,我想要使用标准C++中的string类,可是QT貌似没有string类(即使加了#include<string>),只有std::string,想问下这个std::string就是标准C++中的string吗?​

什么方法快速判断NRF24L01是否工作正常

      如题,NRF24L01是SPI总线通信,因此没法使用USB转TTL和串口调试助手进行调试,一般我们测试NRF24L01是否正常的方法都是给它发送五个初始化指令0xA5判断它是否回应成功,但是这个方法不是每次都有用,因为有些NRF24L01初始化成功但是通信还是失败...请问大家有没有什么方法能快速判断NRF24L01是否通信成功呢?用一个板子的两个硬件SPI接口进行主从一体通信可以吗?

晶振倍频原理是怎样的

       晶振分频很容易理解,比如二分频就是晶体发出两个震荡时钟,STM32就视为一个周期。但是一直不懂STM32使用8M无源晶振是如何倍频成72M、168M这么高的频率的,是因为STM32给晶振加了电压让晶振发出更高的频率吗?还是别的方法?​

无线串口通信大家一般会用什么格式

       如题,有些要用到LORA、蓝牙这种无线串口采集温度、湿度等数据时,就涉及到发送数据格式的问题。单片机只能发送字符和字符串,一般而言发送的数据方法有三种:第一,使用工业上的十六进制位数传输法,将温度、湿度等数据转化为16进制数,以int型数组形式存放,然后以一次发送单个字符的形式发出,如温度26度,湿度80%,则发送0x1A 0x50两个字符。此方法的缺点是发送大于127的十六进制数时需要拆成高低两位;第二,拆成十进制幂数,发送幂的ASCII码或序数码,如温度26度,湿度80%,则发送0x32('2')、0x36('6')、0x38('8')、0x30('0')四个字符,这个方法的协议和运算量非常麻烦,但是最好理解,并且可以发送任意位数的数;第三,使用字符串形式发送,在接收端拆开字符串进行解析,如温度26度,湿度80%,光照强度500px,发送str"26-80-500",接收端解析str[0]、str[1]、str[3]...这个方法最好理解,协议也最清晰,但是算法也不简单,并且需要规避串口开始位、校验位、字符串结束符、停止位等等这些与数据无关的位。    如果是从数据量多而且大、程序容易书写、容易理解、不容易出BUG、不考虑时间复杂度和空间复杂度的前提下,使用哪种方法是最好的?​

单片机通信中宽字符的应用多不多

       如题,在Cortex-A板子嵌入式程序开发和X86桌面程序开发中,16位宽字符和宽字符串是非常常用的,如Linux中的WCHAR、WString类,QT中的QString类也是由WString类演化而来的16位宽字符串类,据说是为了支持utf-8中必须使用16位数据格式的特殊字符如汉字、日文等。我个人感觉这种宽字符类非常不友好,与string类、char*这种原来的八位字符串进行交互需要进行toLatin()这种转化。请问,单片机要使用这种宽字符串的话,有没有现成的兼容库呢?应用场合多吗?