关于Arduino Mega 2560串口的一些蛋疼问题
来源:互联网 发布:淘宝运营团队管理 编辑:程序博客网 时间:2024/04/29 18:29
关于Arduino Mega 2560串口的一些蛋疼问题
1 等待串口连接的代码段必须使用官方串口监视器才能激活
如下面的代码段,如果使用普通串口助手在程序刚上传后、板子复位或USB线重新插拔后都会接收不到 ”Hello World!” ,也就是说程序运行不正常,而使用官方的串口监视器则没有这个问题。现在的解决办法是先使用官方的串口监视器先打开板子串口一下,紧接着在使用普通串口助手就可以打开了。本人纠结这个事情是因为自己在MFC中使用CSerial类编写的上位机软件和普通串口助手的情况一致。
void setup() { Serial.begin(9600,SERIAL_8N1); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } //////////////////////////////向上位机传输下位机的初始化信息 Serial.println("Hello World!!");}
2 检测上位机命令的代码段的莫名其妙的问题
其代码段为:
String chString;//字符型字符串,用于储存上位机的命令String valString;//用于储存上位机传来的数字信息void checkState(double &vel_aim){ char ch; while (Serial.available() > 0) { ch = Serial.read(); chString += ch; if (isDigit(ch) || '.'==ch) { valString += ch; }/************************************************************************//* 下面的三行代码,在官方的串口监视器上可以注销的,但是在普通的串口助手和/* 咱们自己的软件也是有问题,这个问题,我们先不去解决吧,先赶进度/************************************************************************/ Serial.print("+++"); Serial.print(ch); Serial.println("+++");/***********************************************************************/ delay(1);//这个delay必须有,不然会出错,就会跳出while循环 }// delay(5);//这个是以前delay的,应该是有用的吧,这个地方需要测试 if (chString.startsWith("S")) { isStart = true; isFirstLoop = true; isEnd = false;// Serial.println("+++"+chString+"+++"); } else if (chString.startsWith("E")) { isStart = false; isFirstLoop = false; isEnd = true;// Serial.println("+++"+chString+"+++"); } else if (chString.startsWith("$")) { //todo here is the programm to set targetSpeed and pwm //123.123就会变成123.12 vel_aim = valString.toFloat();// Serial.print("+++"+valString+"+++"); } chString = ""; valString = "";}void loop() { checkState(vel_aim);}
在上面的代码段中,下面的几行代码是必须的,器原因如注释所示:
/************************************************************************//* 下面的三行代码,在官方的串口监视器上可以注销的,但是在普通的串口助手和/* 咱们自己的软件也是有问题,这个问题,我们先不去解决吧,先赶进度/************************************************************************/ Serial.print("+++"); Serial.print(ch); Serial.println("+++");/***********************************************************************/ delay(1);//这个delay必须有,不然会出错,就会跳出while循环
其中那个delay(1)
,如果没有的话它会直接跳出while循环,不管有几个字符,剩下的那三行代码是在我试验的时候加的,如果不加这三行代码,程序就运行不正常,这个以后再试验得出结果吧。
PLUS: 这是我第一次使用MarkDown进行编辑,感觉还不错吧,以后再尝试使用
0 0
- 关于Arduino Mega 2560串口的一些蛋疼问题
- 树莓派通过串口与arduino mega 2560通信
- Arduino mega 2560的PWM调整
- arduino mega 2560 针脚说明
- 关于Flask mega-tutorial遇到的一些问题(外网访问+OpenId)
- 关于Flask mega-tutorial遇到的一些问题-二(Form更名,sqlalchemy默认值)
- 关于Flask mega-tutorial遇到的一些问题-三(Flask_mail服务器及邮箱设置)
- Arduino串口的一些高级用法
- Arduino 串口的一些高级用法
- 串口的一些高级用法arduino
- Arduino Mega 2560 Reference Design原理图解读
- ZC-ADK与Arduino Mega-adk的对比
- MirandaSoft! Arduino Mega 2560: WIZnet以太网插板项目--element14
- arduino mega 2560结合 ethernet shield拓展板使用心得
- window10 Arduino Mega 2560 插上电脑找不到端口
- Arduino串口的使用
- Arduino的串口
- Arduino的串口
- 栈的典型应用 —— 嵌套递归
- 深入浅出RxJava四-在Android中使用响应式编程
- php7
- RelativeLayout
- Minimum path sum问题
- 关于Arduino Mega 2560串口的一些蛋疼问题
- Effective C++--条款20:适当地用pass-by-reference-to-const代替pass-by-value
- ios开源框架——WebViewJavascriptBridge& OVGap&apache cordova& JavaScriptCore(原生) (JS与iOS Native Code互调)
- 六大排序(选择,插入,冒泡,希尔,快排,堆排序)
- 到底什么是restful
- android 发布流程
- Android入门-使用Http协议访问网络
- mysql -参数thread_cache_size优化
- CentOS7安装EPEL源