Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2337|回復: 4
打印 上一主題 下一主題

關於parseInt() 使用

[複製鏈接]
跳轉到指定樓層
1#
發表於 2016-10-3 18:15:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
目前使用Mega & UNO 兩個使用TX RX 傳送數據發現使用parseInt()函式後
讀取 傳送都比read()慢很多


不用READ是因為不熟ASCII轉INT
請問有人知道還有什麼方法讀取INT?
2#
發表於 2016-10-4 09:15:19 | 只看該作者
是慢一點, 不過應該是沒差太多才是
應該會遠小於 0.1秒吧
如果要快一點, 就直接送 binary
傳送端
int i = -1234;
Serial.write(i);
Serial.write(i>>8);
接收端
int i = 0, j=0;
unsigned char Buf[2];
void loop() {
  if(Serial.available()) {
    Buf[i] = Serial.read();
    if(++i >= 2) {
      j = *((int *)&Buf[0]);
    }
}
不過重點要自己做對齊的動作
3#
 樓主| 發表於 2016-10-4 13:26:05 | 只看該作者
回復 2# 超新手


   是慢很多!!因為我用無延遲去看serial 視窗
int就是慢好幾倍

目前自己想到的解法是

Serial2.write(a);
for(int z=0;z<3;z++){
while (!Serial2.available()){}
  n=Serial2.read();
  Serial2.flush();
  n=n-48;
  y=n;
  i++;
  if(i>2) i=0;
}
  x=y[0]*100+y[1]*10+y[2];


這樣目前使用上還算能接受XD
因為只會收到0~3位數 這樣應該可以解
4#
發表於 2016-10-4 14:01:55 | 只看該作者
本帖最後由 超新手 於 2016-10-7 11:25 編輯

我很好奇, 你這樣寫....
可以驗證(Build)成功嗎?
我知道了
原來是這個論壇的問題
只要打 [ i ], 都會不見 程式應該是
  1. y[i]=n;
複製代碼

你可以自己看看自己貼的程式, 其實是有問題的
5#
 樓主| 發表於 2016-10-4 16:43:50 | 只看該作者
本帖最後由 bnm890bnm 於 2016-10-4 16:45 編輯

回復 4# 超新手


我是用副程式int group_num(char a){
Serial2.write(a);
i=0;
for(int z=0;z<3;z++){
while (!Serial2.available()){}
  n=Serial2.read();
  Serial2.flush();
  n=n-48;
  y=n;
  i++;
  if(i>2) i=0;
}
  x=y[0]*100+y[1]*10+y[2];
}
這樣是驗證能過!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-23 19:36 , Processed in 0.159027 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表