关于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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 转租的房子押金怎么办 卖方违约中介费怎么办 房子不想租了怎么办 转租房屋室友不同意怎么办 提前不租房押金怎么办 租房提前走押金怎么办 出租车上丢东西怎么办 我有车想租出租车手续怎么办? 东西落在顺风车怎么办 滴滴投诉不处理怎么办 的士车上丢东西怎么办 手机掉在出租车怎么办 出国痰培养不合格怎么办 教师资格证体检弱视怎么办 弱视不能考驾照怎么办 驾驶证b证扣分怎么办 c1并d照怎么办 钱包落出租车上怎么办 杭州车过户车牌怎么办 哈市医保卡丢失怎么办 退休时医保怎么办手续 社保退休了医保怎么办 工作调动后医保怎么办 异地工作调动医保怎么办 工作调动社保医保怎么办 工作调动了社保怎么办 医疗卡丢了怎么办 省直医保卡丢失怎么办 医保卡挂失失败怎么办 临时社保卡过期怎么办 医保卡补办期间怎么办 医保丢了住院怎么办 临时社保卡丢失怎么办 深圳社保卡丢失怎么办 医疗保险本丢了怎么办 人不在家怎么办社保卡 人外地怎么办社保卡 卡身份证丢了怎么办 小孩医保卡丢失怎么办 医疗保险卡丢了怎么办 汽车保险卡丢了怎么办