12
返回列表 发新帖
楼主: tv998

[未解决] 字符串是否对比该使用哪个函数?

[复制链接]

该用户从未签到

 楼主| 发表于 2021-3-6 14:43 | 显示全部楼层
sangshu 发表于 2021-3-6 14:22
把奇偶校验去掉,SERIAL_8E1
或者换一个串口监视器,选择8位数据,校验位even,1个停止位。(arduinoide ...

OKOK.png
详见附图:
和奇数偶校验这些没关系的,我本身调试的时候,就没采用 Arduino 自带的串口监视器。

该用户从未签到

 楼主| 发表于 2021-3-6 15:47 | 显示全部楼层
https://blog.csdn.net/qq_34680219/article/details/86023062?utm_source=app
CSDN 上也有人讨论过相同这个问题,但没留下代码,我试着用 Strncmp 函数,也没调试成功。

该用户从未签到

发表于 2021-3-6 16:22 | 显示全部楼层
你是接收的非字符是吧?
unsigned char itea[] = {0xB0,0x70,0x00,0xC0,0x0};

if(!strcmp(comdata.c_str(),(const char*)itea))//这个语句始终无法正确判断

估计你是想这样,你试试。

该用户从未签到

 楼主| 发表于 2021-3-6 17:57 | 显示全部楼层
我接收的是单片机发来的 16 进制代码,我刚开始玩 Arduino 没几天,还有很多不懂和概念迷糊的地方,大神多多指导

该用户从未签到

发表于 2021-3-6 18:05 | 显示全部楼层
tv998 发表于 2021-3-6 17:57
我接收的是单片机发来的 16 进制代码,我刚开始玩 Arduino 没几天,还有很多不懂和概念迷糊的地方,大神多 ...

这样也不好,如果利用字符串比较,不要在数组中间出现0x00,因为,string类或者c语言的字符串,

都是以0x00作为字符串结尾的。因此0x00后面的,相当于没有参与比较。要么自行写一个比较函数,要么不要在比较的数组中出现0x00即可。。

该用户从未签到

 楼主| 发表于 2021-3-6 18:06 | 显示全部楼层
我把
unsigned char itea[] = {0xB0,0x70,0x00,0xC0,0x0};
改成
String “B07000C000"
也是调试不过。

该用户从未签到

发表于 2021-3-6 18:32 | 显示全部楼层
tv998 发表于 2021-3-6 18:06
我把
unsigned char itea[] = {0xB0,0x70,0x00,0xC0,0x0};
改成

你发送的不是字符,就不能这样比较。,这样代表10个字节,‘每个是一个16进制,

而你发送的是相当于4个字节。而且发送的还不是ascii码,发送大小写字母或者数字,才是能这样比较。

因此发送非字符的16进制,需要另外利用数组定义(16进制如0xb0),不能使用双引号实现。

签到天数: 67 天

[LV.6]常住居民II

发表于 2021-3-6 18:32 | 显示全部楼层
tv998 发表于 2021-3-6 18:06
我把
unsigned char itea[] = {0xB0,0x70,0x00,0xC0,0x0};
改成

1 uint8_t读取 for循环比较
2 有偿代写解决这个问题

该用户从未签到

 楼主| 发表于 2021-3-7 05:12 | 显示全部楼层
找到原因了,把 “B07000C0”用  ASCII 方式发送就有正常应答了,如果是 用 16 进制发送 ,发 42 30 37 30 30 30 43 30  也一样正常应答了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

【分享】esp8266/32 炫彩LED氛围灯
【分享】esp8266/32 炫彩L
[md]# esp8266/32 炫彩LED氛围灯 - 作者:pengqiangsheng - 说明:基于太极创客智能
ESP32-CAM 推流直播【分享】
ESP32-CAM 推流直播【分享
# ESP32-CAM 推流直播 > 使用esp32-cam进行实时录像,然后通过obs推流到虎牙直播。
DS18B20温度传感器,资料分享
DS18B20温度传感器,资料
DS18B20温度传感器,需要资料的可以留下联系方式。
【分享】esp8266/32 网站快速生成器脚手架和mqtt web客户端
【分享】esp8266/32 网站
一、mqtt web客户端 先来分享一下mqtt web客户端吧: 下载后就解压里面有两个文件:
教你让OLED动起来!多重字符串版!
教你让OLED动起来!多重字
大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表