串口如何数据提取变量,请各位高手指点
本帖最后由 八爪鱼 于 2012-5-2 14:31 编辑遇到的问题是这样的:
条件:串口不定时传入变化的数值如: a=451b=874c=656
要求:
收到数值后 将对应的数值赋予对应变量q、w、e中 如收到c=238 则变量q等于238
我是这样写的:没办法把传入的 a=451b=874c=656 赋予对应变量 q、w 、e 请各位前辈指教,需要什么样的指令才能完成以上功能
int comtemp; //串口传来的数据保存到了这个变量中
int q; //用于存储a=后面的数值变量
int w; //用于存储b=后面的数值变量
int e; //用于存储c=后面的数值变量
void setup()
{Serial.begin(9600);} //设置波特率
void loop()
{
if (Serial.available() > 0) //当串口有数据传来时执行
{
comtemp = Serial.read(); //把串口的数据存到变量comtemp中
}
comtemp=0; //清理变量使数据最新
}
这样的方式写对吗?各位前辈帮帮忙 新手问的问题很傻
什么叫字母什么叫数值? 本帖最后由 八爪鱼 于 2012-5-2 14:23 编辑
珜羽 发表于 2012-5-2 13:28 static/image/common/back.gif
什么叫字母什么叫数值?
就是把串口收到的 a=238中的238提取出来作为变量q的数值
a= 就是字母
238 就是数值
新手,叫的可能不准。。。。勿见怪 八爪鱼 发表于 2012-5-2 14:21 static/image/common/back.gif
就是把串口收到的 a=238中的238提取出来作为变量q的数值
a= 就是字母
= = a叫做变量名,数字就是变量的值。。。
你上位机按照abc发送数值,单片机就按照qwe接收就行了。 int comtemp; //串口传来的数据保存到了这个变量中
int q; //用于存储a=后面的数值变量
int w; //用于存储b=后面的数值变量
int e; //用于存储c=后面的数值变量
void setup()
{Serial.begin(9600);} //设置波特率
void loop()
{
if (Serial.available() > 0) //当串口有数据传来时执行
{
q = Serial.read(); //把串口的数据存到变量q中
}
if (Serial.available() > 0) //当串口有数据传来时执行
{
w = Serial.read(); //把串口的数据存到变量w中
}
if (Serial.available() > 0) //当串口有数据传来时执行
{
e = Serial.read(); //把串口的数据存到变量e中
}
} 还有个问题是你的数字大于255超过一个字节所能表示的范围了。
单片机串口是一个字节一个字节的发送数据的。。这个地方不知道库里面怎么处理的。你自己研究研究。。
或者把数据拆分成六个字节传送吧。 珜羽 发表于 2012-5-2 14:55 static/image/common/back.gif
= = a叫做变量名,数字就是变量的值。。。
你上位机按照abc发送数值,单片机就按照qwe接收就行了。
{:3_61:}原来是这样啊。。。
弱弱的问一句是按照顺序发送值就可以了吗 比如发送了222 333 444就按顺序对应到了 q w e 中吗。。。。。。。我这就去实验下。 谢谢! 八爪鱼 发表于 2012-5-2 15:07 static/image/common/back.gif
原来是这样啊。。。
弱弱的问一句是按照顺序发送值就可以了吗 比如发送了222 333 444 ...
一个字节最大255,一个字节8bit表示范围为0~255或者-127~128. 珜羽 发表于 2012-5-2 15:11 static/image/common/back.gif
一个字节最大255,一个字节8bit表示范围为0~255或者-127~128.
那完了{:3_60:}我要传的数值大于这个数有什么办法吗? 如果限制在0~255之间的话, 直接发送“222 223 224 ” 就能对应到 q w e 中吗,前辈。 我是菜鸟。。。问题可能有些傻 八爪鱼 发表于 2012-5-2 15:26 static/image/common/back.gif
那完了我要传的数值大于这个数有什么办法吗? 如果限制在0~255之间的话, 直接发送“222 223 2 ...
对的。。。太大的话你分两次传嘛。。。
qh = Serial.read();
ql = Serial.read();
q=qh<<8 &ql;等价于 q=qh*256+ql;
页:
[1]