极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17422|回复: 12

求助求助!串口字符串转换问题!!!

[复制链接]
发表于 2014-10-28 13:03:10 | 显示全部楼层 |阅读模式
想法很简单,就是希望从串口输入一个数值,这个数值被用作模拟信号输出。但是我尝试了很多办法,都没有成功。
在arduino的例子里面,我启用了这个名为string toint的程序,但是发现在串口监视器里面输入数值没有反应,这又是怎么回事?
另外,如果是两个arduino之间的通讯,数据类型也是字符串吗?》
回复

使用道具 举报

 楼主| 发表于 2014-10-28 13:03:54 | 显示全部楼层
没有人来吗,这个问题我很急的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-28 13:24:25 | 显示全部楼层
真的很急啊,怎么做,才可以让串口输入的值,被用来作为一种数据使用呢?我已经百度了两天了。。。。
回复 支持 反对

使用道具 举报

发表于 2014-10-28 14:42:40 | 显示全部楼层
把你程序粘上来
回复 支持 反对

使用道具 举报

发表于 2014-10-28 15:57:59 | 显示全部楼层
把你程序粘上来
回复 支持 反对

使用道具 举报

发表于 2014-10-28 19:53:01 | 显示全部楼层
这个数值被用作模拟信号输出


你是用什麼方法作 模擬輸出?  PWM 並非一般的 analog 訊號.

兩個 arduino 通訊, 最簡單應該是 serial 的通訊吧.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-30 07:50:54 | 显示全部楼层
i7456 发表于 2014-10-28 15:57
把你程序粘上来

就是想要串口通讯,遥控小车带pwm的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-30 07:51:52 | 显示全部楼层
Super169 发表于 2014-10-28 19:53
你是用什麼方法作 模擬輸出?  PWM 並非一般的 analog 訊號.

兩個 arduino 通訊, 最簡單應該是 seria ...

serial通讯传输的是字符串,还普通的十进制数据
回复 支持 反对

使用道具 举报

发表于 2014-10-30 15:36:17 | 显示全部楼层
本帖最后由 Super169 于 2014-10-30 15:37 编辑
Yuyuko啦啦 发表于 2014-10-30 07:51
serial通讯传输的是字符串,还普通的十进制数据


自己做的通訊, 要送什麼也是自己定的.  在我們的層面去看, 資料都是一個 byte 一個 byte 的傳出去。
用字符作傳送, 還是用數值作傳送, 並沒有一定的準則.

要傳送一個數值為 26 的資料, 用字符的話, 可以用 10 進的 "26", 也可用十六進的 "1A", 也可以用 8 進的 "32", 亦可以簡單直接用一個 Byte 的值為 0x1A 送過去.  表收後如果解釋, 都是自己做的, 只要有共通的通訊協定, 用什麼方法傳送也不是問題.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-30 19:19:14 | 显示全部楼层
Super169 发表于 2014-10-30 15:36
自己做的通訊, 要送什麼也是自己定的.  在我們的層面去看, 資料都是一個 byte 一個 byte 的傳出去。
用 ...

我的意思并不是这样。现在有这么样的一个情况,我在电脑串口监视器输入一个值,将这个值通过arduino返回,就不再是原来的值了。那么,现在的要求就是将输入的值完整的返回出来。最好的情况就是,比如:11,12,13.这三个数字可以分别被arduino调用
回复 支持 反对

使用道具 举报

发表于 2014-10-30 22:22:29 | 显示全部楼层
首先, 你要明白 "电脑串口监视器输入一个值", 你輸入的值會是什麼.
如果你用鍵盤輸入 "11",  那並不是 數值 11, 而是字串 "11", 數值上是兩個 byte 0x31 0x31
如果你想 arduino 接收到的是 11 的值, 就要自己把 0x31 0x31 轉化成 11 了, 方法有很多, 可以用 Serial.parseInt, 也可以用 atoi, 當然, 不想耗資料的, 可以把收到的兩個 byte 直接轉化  (b1 - '0') * 10 + (b2 - '0')
至於用那個方法, 就看你自己的選擇了.  有人會選擇簡單方便的做法, 亦有人會重視資源, 各有好處.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-31 10:33:06 | 显示全部楼层
Super169 发表于 2014-10-30 22:22
首先, 你要明白 "电脑串口监视器输入一个值", 你輸入的值會是什麼.
如果你用鍵盤輸入 "11",  那並不是 數值 ...

恩,知道了,可是现在新问题又来了。Serial.parseInt只能读取第一个数值。而我串口传输的是多个数值。我参考了别人的分隔处理法,成功的解决了从串口监视器输入数值并且处理的问题。可是当我尝试两个板子间的串口通信的时候。发现又来了一个问题。 b板为接受板,能够处理从串口监视器传来的形如a,b的字符串。我从a板写入几个Serial.print ,形成了a,b这样的形式,发送给b板处理的时候,就失败了。这个问题的原因是不是a板发送的数据必须类似于从串口监视器打入的数字那样
回复 支持 反对

使用道具 举报

发表于 2014-10-31 11:54:00 | 显示全部楼层
當 arduino 板子用 usb 接電腦時, rx/tx 就盡量不要用了, 因為已經連上電腦.
如果用 mega 板子, 可以用 serial1 接其他板子, 否則盡量用 software serial.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 01:17 , Processed in 0.040342 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表