极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11107|回复: 3

关于直流电机驱动板 Sabertooth 2x12A 的串口命令格式,求解...

[复制链接]
发表于 2012-10-1 22:29:29 | 显示全部楼层 |阅读模式
本帖最后由 highplay86 于 2012-10-2 10:49 编辑
  1. int inByte;

  2. void setup() {
  3.   Serial.begin(9600);
  4.   Serial1.begin(9600);

  5. }

  6. void loop()
  7. {
  8.   //读取端口0,发送到端口1:
  9.   if(Serial.available())
  10.   {
  11.     inByte=Serial.read();
  12.     Serial1.print(inByte,BIN);
  13.     Serial.println(inByte,BIN);

  14.   }


  15. }
复制代码



还是这个程序,不过这次有大问题了...我近日买的一个 Sabertooth 2x12A 的直流电机驱动板,有四种控制模式,我目前需要用第三种模式,即Simplified Serial Mode        ,这种模式支持串口控制信号,可以通过切换开关组合切换波特率,它的单字节型控制命令(即8位),不过我通过Serial.print输出的命令根本不是8位...而且默认输出的是ASCII码,即使改成二进制输出,一个数字就已经6位了,两个数字12位.......怎么搞呢...



第一行是输入"1"的返回结果,第二行是"2"的返回结果,第三行和第四行是"12"的返回结果...
按这样,我不可能把一个"123"的三位数作为驱动板的命令以八位的单字节形式发送...
高手啊.......不吝赐教.....

相关的驱动板的资料:
驱动板说明书
开关选择向导
产品对比介绍
快速开始指南

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-10-2 02:08:59 | 显示全部楼层
你是要把ASCII码1转成00000001,2转成00000010,3转成00000011……对吗
那简单,inByte - 0x30,这样就可以了
如果是要转分开传送的12,先把1  2 接收完,组合成12再转
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-2 08:25:43 | 显示全部楼层
test01 发表于 2012-10-2 02:08
你是要把ASCII码1转成00000001,2转成00000010,3转成00000011……对吗
那简单,inByte - 0x30,这样就可以 ...

哦...我懂你的意思了,先进行逻辑运算对吧....嗯...有点思路了,谢了...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-2 09:18:08 | 显示全部楼层
本帖最后由 highplay86 于 2012-10-2 10:50 编辑

这样好像还是有问题啊...记得以前的IDE版本有直接输出单字节的模式,比如说:
Serial1.print (cSpeedVal_Motor1, BYTE);
Serial1.print (cSpeedVal_Motor2, BYTE);

现在的1.01版本的IDE用Serial1.write解决输出单字节问题,不过这么输出好像还是不能控制这个驱动板...
说明书上关于这个串口控制的模式的命令格式说明如下...求解正确的命令编程格式.........












本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-2 09:22 , Processed in 0.050246 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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