#基于51单片机与HC04蓝牙模块的使用中在正确的数据的最后两位为固定的乱码在修改传输的位置上发现并无不同,传输的数据,是HC—SR04超声波模块(利用定时计数器获取的数据,在将其完全转化为整数后问题依旧存在修改输出位数后乱码有所变化)蓝牙模块的代码如下:
void transfer_HC04(uchar character)
{
SBUF=character;
//UART_init();
while(!TI);
TI=0;
Delay20us();
}
void PostString(uchar*p)
{
while(*p) //若指针指向的地址为空,则跳出循环
{
transfer_HC04(*p); //指针第一次默认指向首地址
Delay20us(); //延时,作用为提高发送准确度
p++;
}
}
void IntConversionChar(uint number)
{
uint model; //模
uint numberByte; //十进制数据不同位上的值
number=value;
for(model=10000;model>=1;model=model/10) //model的取值根据实际需要选择,选择过大会浪费资源
{
numberByte=number/model; //相除取整
//当取到整数数据的最高位时,将其加上0x30或者48并转为字符型后发送
if(numberByte>=1)
{
transfer_HC04((uchar)(numberByte%10+0x30));
//if(numberByte >=1 )transfer_HC04((unsigned char)(numberByte%10+48));
}
}
transfer_HC04((uchar)(77));
transfer_HC04((uchar)(77));
}
数据部分的代码如下:
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出来是CM
value=(time*1.7);
问题似乎出在IntConversionChar函数中,这个函数将一个整数值转换成字符串并传输到蓝牙模块上。在这个函数中,您使用了一个for循环来逐位处理整数值,并将每个数字转换为字符型后传输到蓝牙模块上。
您提到在传输的数据的最后两位存在固定的乱码。根据您的代码,您在数据传输完成后,添加了两个固定值77,这可能是导致乱码的原因。建议您检查一下是否有必要添加这两个固定值。
此外,在for循环中,您在处理整数值的最高位时,将其加上0x30或者48并转换为字符型后发送。建议您添加一个判断,如果整数值的最高位为0,不要将其转换为字符型后发送,而是跳过该位。这可能会导致一些输出位数上的变化,但可能会解决乱码问题。
最后,建议您检查一下蓝牙模块的参数设置是否正确,例如波特率等,这可能也会导致数据传输出现问题。有用记得给个关注支持一下!!!
不知道你这个问题是否已经解决, 如果还没有解决的话:from bqplot import pyplot as plt
import numpy as np
y = np.cumsum(np.random.randn(100)*100)
x = np.linspace(0.0,10.0,100)
fig = plt.figure(animation_duration=2000)
line = plt.plot(x,y)
plt.show()
line.y = np.cumsum(np.random.randn(100)*100)