刚开始学习,向大侠请教一个串口接收的问题
我用STC单片机,向arduino板通过串口不停的循环发送:$1170904,00&
$1120904,01&
$1170904,02&
$1170904,03&
$1120904,04&
$1170904,05&
$1170904,06&
$1120904,07&
$1170904,08&
$1170904,09&
$1170904,10&
$1120904,11&
$1170904,12&
$1170904,13&
$1170904,00&
$1120904,01&
$1170904,02&
$1170904,03&
$1120904,04&
$1170904,05&
$1170904,06&
$1120904,07&
$1170904,08&
$1170904,09&
$1170904,10&
$1120904,11&
$1170904,12&
$1170904,13&
想用arduino板把接收到的数据转换成数组 ,如接收到$1170904,13& 转换为numdtat 的值等于1170904;
char temp;
while(Serial.available()>0)
{
temp =Serial.read();
if (temp == '$')
{
}
}
具体怎么转换就搞不清了,哪位大侠给指导一下,谢谢!急!
if ( Serial.available()>0)
{
char ch = Serial.read()
switch(ch) {
case '0'...'9':
v = v * 10 + ch - '0';
break;
case ',':
break;
......
}
} 拾瑞 发表于 2013-6-7 16:45 static/image/common/back.gif
if ( Serial.available()>0)
{
char ch = Serial.read()
您好!谢谢指导。可是没有看太明白,先理解一下。 有点明白了。 拾瑞 发表于 2013-6-7 16:45 static/image/common/back.gif
if ( Serial.available()>0)
{
char ch = Serial.read()
int v ;
if ( Serial.available()>0)
{
char ch = Serial.read()
switch(ch) {
case '0'...'9':
v = v * 10 + ch - '0';
break;
case ',':
break;
}
}
按您程序试了一下,没成功。能麻烦您说的再详细些吗?谢谢! 本帖最后由 maxims 于 2013-10-7 09:17 编辑
int v ;
if ( Serial.available()>0)
{
char ch = Serial.read() //读串口到ch
switch(ch) {
case '0'...'9': //如果收到的ch值为0-9的数字,就执行下边的语句
v = v * 10 + ch - '0'; //奥妙就在这里拉,V的值是上次接收到的,CH-"0"是把接收到的字符格式变成数字格式,但是他的写法有问题,应该多一个括弧变成v = v * 10 + (ch - '0')。
//如果你需要发送8976543,第一次收到的如果是8,在第二次的时候应该是9,那么对应v * 10 + (ch - '0')=8*10+ (39 - 30)=89,是不是你需要的8976...开头两位?
break;
case ',': //如果收到的是“,”就退出判断程序
break;
}
}
int v ;
if ( Serial.available()>0)
{
char ch = Serial.read() //读串口到ch
switch(ch) {
case '0'...'9': //如果收到的ch值为0-9的数字,就执行下边的语句
v = v * 10 + ch - '0'; //奥妙就在这里拉,V的值是上次接收到的,CH-"0"是把接收到的字符格式变成数字格式,但是他的写法有问题,应该多一个括弧变成v = v * 10 + (ch - '0')。
//如果你需要发送8976543,第一次收到的如果是8,在第二次的时候应该是9,那么对应v * 10 + (ch - '0')=8*10+ (39 - 30)=89,是不是你需要的8976...开头两位?
break;
case ',': //如果收到的是“,”就退出判断程序
break;
}
}
页:
[1]