我正在使用Scribbler 2 robot和Fluke 2板卡,並通過Myro in Java與福祿克通信。 Fluke板是Scribbler和用Java編寫的桌面客戶端之間的藍牙通信橋。它通過一個RS232串行端口與Scribbler通信。有符號和無符號字節之間的自動轉換?
這可能是一個愚蠢的問題,上述系統很複雜,所以如果我沒有解釋清楚,請耐心等待。
我的問題的背景: Java使用帶符號的字節。福祿克是(我認爲)用C編寫的,以便使用無符號字節。 Scribbler上的固件寫入Spin,它也使用無符號字節。 Scribbler固件的一些命令字節碼使用大於127的值,因此當它們從我的Java客戶端發送時,它們將作爲負數發送。機器人沒有響應這些> 127命令,我試圖理解爲什麼。
我的問題的要點:如果我從Java發送162,它顯示爲-94(在我的控制檯中用'print'看到這一點)。 Spin固件是否將此視爲162,因爲一個字節是一個字節,還是會將其視爲其他內容?
我知道旋轉代碼正在爲params做一些移位操作,移動命令可以大於255,但它並不是針對特定命令執行的。
pub Move | x_coord, y_coord
' 0 1 2 3 4 5
'Format 162 type hXByte lXByte hYByte lYByte
' type := indata[1]
x_coord := (indata[2]<<8 | indata[3])
y_coord := (indata[4]<<8 | indata[5])
番茄 - 你有一個Scribbler.java版本的move()實現,或者你自己實現它嗎?我有Scribbler.java的1.15版本,我即將實現Scribbler.cs中的新功能 - 這就是你在做什麼?有小費嗎? –
@KevinMiller - 我有v 1.1.5 - 它有'void move(double translate,double rotate)'在裏面。自從我看了所有這些之後的幾年 - 我想我已將它更新爲IPRE Scribbler2 Firmware v1.1.2 –
番茄 - 感謝您的回覆,但我可能會感到困惑 - 旋轉函數「pub Move」由代碼觸發162從串行端口,但162永遠不會被Scribbler.java發送。 Scribbler.java中的void move(double translate,double rotate)最終將代碼109發送到串行端口。旋轉移動()和java move()不相關。您是否能夠通過單個java命令讓機器人移動到(x,y)座標? –