Robofun 機器人論壇

標題: 關於parseInt() 使用 [打印本頁]

作者: bnm890bnm    時間: 2016-10-3 18:15
標題: 關於parseInt() 使用
目前使用Mega & UNO 兩個使用TX RX 傳送數據發現使用parseInt()函式後
讀取 傳送都比read()慢很多


不用READ是因為不熟ASCII轉INT
請問有人知道還有什麼方法讀取INT?
作者: 超新手    時間: 2016-10-4 09:15
是慢一點, 不過應該是沒差太多才是
應該會遠小於 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]);
    }
}
不過重點要自己做對齊的動作
作者: bnm890bnm    時間: 2016-10-4 13:26
回復 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位數 這樣應該可以解
作者: 超新手    時間: 2016-10-4 14:01
本帖最後由 超新手 於 2016-10-7 11:25 編輯

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

你可以自己看看自己貼的程式, 其實是有問題的
作者: bnm890bnm    時間: 2016-10-4 16:43
本帖最後由 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];
}
這樣是驗證能過!!




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2