【求助】USB转串口数据获取不正确
本帖最后由 Stormer 于 2014-4-25 09:02 编辑我想连接我的USB键盘到ARUIDNO UNO上。所以我把USB键盘的4根线连接到ARDUINO,然后代码如下。
运行的时候有几个错误:
1、ARDUINO串口接收过来的数据跟ASCII码不对应,比如我按下键盘的数字1键,正确的话应该显示10进制的ASCII码 49,可是现在得到的数据是139;
2、每次按下键盘按键,会获取到多个值回来。如果说是我按键滞留时间长,那么返回值也应该都一样啊,但是现在返回的是多个不同的值。
3、如果我把USB的正电压数据线接在UNO的数字接口1上,串口监视器会不停的显示255.我并没有写发送数据的代码啊。
4、除了下面这种读取串口数据的方法,还有什么其他办法吗?听有的朋友说推荐使用中断的方式来读取。能不能简单介绍一下?我刚学单片机,理解中断,但是没有这样读取过串口数据。 :(
请问这些情况是怎么造成的,如何解决呢?多谢!~
USB线的说明:
红线:电源正极(接线上的标识为:+5V或VCC)
黑线:接地(标识为:GROUND)
白线:负电压数据线(标识为:Data-或USB Port -)
绿线:正电压数据线(标识为:Data+或USB Port +)
红线我接到5V,黑线接到GND,白线接到数字接口0,绿线接到数字接口1.
源码:
void setup()
{
Serial.begin(9600); //设置波特率为9600,一般是这个波特率
}
void loop()
{
if(Serial.available()>0)//如果串口有数据进入的话
{
int iGot = Serial.read();//每次读一个字符,是ASCII码的
Serial.println( iGot, DEC);
//delay(100);
}
}
串口监视窗(按下一次数字1键返回的内容,多次按下返回的始终都是这几个值):
不知道你怎么连接的?
有2点:
1.键盘使用的code和ascii是不同的,具体请参阅ps2相关资料
2.按下和抬起键是两个事件,所以有2个code 本帖最后由 Stormer 于 2014-4-25 08:59 编辑
zoologist 发表于 2014-4-25 08:49 static/image/common/back.gif
不知道你怎么连接的?
有2点:
USB线的说明:
红线:电源正极(接线上的标识为:+5V或VCC)
黑线:接地(标识为:GROUND)
白线:负电压数据线(标识为:Data-或USB Port -)
绿线:正电压数据线(标识为:Data+或USB Port +)
红线我接到5V,黑线接到GND,白线接到数字接口0,绿线接到数字接口1.
原来还有抬起的事件!太好了~多谢扫盲!我去找找PS2键盘的资料。 呃 你这样的连接好像很奇怪啊。 usb信号不是串行数据,应该是差分信号吧?
直接接收到的数据应该是完全错误的啊?
不知道有没有高手指点一下? 不错,{:soso_e179:}{:soso_e179:}{:soso_e179:}
页:
[1]