#author("2026-05-03T22:43:04+09:00","default:TESLA2","TESLA2") #author("2026-05-04T00:12:22+09:00","default:TESLA2","TESLA2") [[Rcb4AckTest.py]] #code(Python){{ r_Python_V100B/sample/Rcb4_ex01.py #coding: UTF-8 import sys import time sys.path.append('../Rcb4Lib') #Rcb4Libの検索パスを追加 from Rcb4BaseLib import Rcb4BaseLib #Rcb4BaseLib.pyの中のRcb4BaseLib が使えるように設定 import time #timeが使えるように宣言 rcb4 = Rcb4BaseLib() #rcb4をインスタンス(定義) #ポートをオープン #rcb4.open('/dev/ttyAMA0',115200,1.3) #(portName,bundrate,timeout(s)) rcb4.open('/dev/ttyUSB0',115200,1.3) #ACKコマンドを送ってRCB4と接続できるか確認 if rcb4.checkAcknowledge() == True: print ('checkAcknowledge OK') print ('Version -->' ,rcb4.Version) else: print ('checkAcknowledge error') print('get config ', end="") print(f"{rcb4.getConfig():x}") print('get pio ',end="") print(f"{rcb4.getPio():x}") print('get all ad data ',end="") print(f"{rcb4.getAllAdData()}") print('voltage ',end="") print(rcb4.getRcb4Voltage()) #:rcb4.setHoldSingleServo(1,0x01) rtn=rcb4.setSingleServo(1,0x01,7500,30) print('setSingleServo return:', end="") print(rtn) time.sleep(0.1) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setSingleServo(1,0x01,3000,30) print('setSingleServo return:', end="") print(rtn) time.sleep(0.1) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setSingleServo(1,0x01,7500,30) print('setSingleServo return:', end="") print(rtn) time.sleep(0.1) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setSingleServo(1,0x01,11000,30) print('setSingleServo return:', end="") print(rtn) time.sleep(0.1) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rtn=rcb4.setSingleServo(1,0x01,7500,30) print('setSingleServo return:', end="") print(rtn) time.sleep(0.1) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rcb4.setFreeSingleServo(1,0x01) sio=0x01 (tf, pos)=rcb4.getSinglePos(1,sio) print(tf,end="") print(' pos=',end="") print(pos) rcb4.close() }} ---- * 動作結果 [#n9a0e9fd] - 5/2では動かなかった以下のプログラムが、Rcb4_ex03.pyが動いた後、実行してみると、なぜか動作(5/3)。 (testpip) pi@rpi-202603261445:~/python/RCB4Lib_for_Python_V100B/sample $ python3 Rcb4_ex01.py open comName=/dev/ttyUSB0 bundrate=115200 timOut=1.3 self.com=Serial<id=0xb670eb80, open=True>(port='/dev/ttyUSB0', baudrate=115200, bytesize=8, parity='E', stopbits=1, timeout=1.3, xonxoff=False, rtscts=False, dsrdtr=False) sendData->[04,fe,06,08,] readData-->[04,fe,06,08,] moveRamToComCmdSynchronize( scrAddr=00, scrDataSize=02) sendData->[0a,00,20,00,00,00,00,00,02,2c,] readData-->[05,00,1b,80,a0,] sendData->[04,fe,06,08,] readData-->[04,fe,06,08,] checkAcknowledge OK Version --> 220 get config moveRamToComCmdSynchronize( scrAddr=00, scrDataSize=02) sendData->[0a,00,20,00,00,00,00,00,02,2c,] readData-->[05,00,13,80,98,] 8013 get pio moveRamToComCmdSynchronize( scrAddr=3a, scrDataSize=02) sendData->[0a,00,20,00,00,00,3a,00,02,66,] readData-->[05,00,00,2c,31,] 0 get all ad data moveRamToComCmdSynchronize( scrAddr=22, scrDataSize=16) sendData->[0a,00,20,00,00,00,22,00,16,62,] readData-->[19,00,31,01,02,00,01,00,02,00,01,00,01,00,24,00,24,00,23,00,23,00,23,00,03,] (True, [305, 2, 1, 2, 1, 1, 36, 36, 35, 35, 35]) voltage moveRamToComCmdSynchronize( scrAddr=22, scrDataSize=02) sendData->[0a,00,20,00,00,00,22,00,02,4e,] readData-->[05,00,33,01,39,] 7.34521484375 setSingleServo( id=01, sio=01, pos=1d4c 7500, fram=001e) runSingleServoCmd( idNum=01, sioNum=01, pos=1d4c 7500, frame=001e) synchronizedAck( txData=[07,0f,02,1e,4c,1d,9f,] ) sendData->[07,0f,02,1e,4c,1d,9f,] readData-->[04,0f,06,19,] setSingleServo return:True getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,50,1d,72,] True pos=7504 setSingleServo( id=01, sio=01, pos=0bb8 3000, fram=001e) runSingleServoCmd( idNum=01, sioNum=01, pos=0bb8 3000, frame=001e) synchronizedAck( txData=[07,0f,02,1e,b8,0b,f9,] ) sendData->[07,0f,02,1e,b8,0b,f9,] readData-->[04,0f,06,19,] setSingleServo return:True getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,24,1b,44,] True pos=6948 setSingleServo( id=01, sio=01, pos=1d4c 7500, fram=001e) runSingleServoCmd( idNum=01, sioNum=01, pos=1d4c 7500, frame=001e) synchronizedAck( txData=[07,0f,02,1e,4c,1d,9f,] ) sendData->[07,0f,02,1e,4c,1d,9f,] readData-->[04,0f,06,19,] setSingleServo return:True getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,db,18,f8,] True pos=6363 setSingleServo( id=01, sio=01, pos=2af8 11000, fram=001e) runSingleServoCmd( idNum=01, sioNum=01, pos=2af8 11000, frame=001e) synchronizedAck( txData=[07,0f,02,1e,f8,2a,58,] ) sendData->[07,0f,02,1e,f8,2a,58,] readData-->[04,0f,06,19,] setSingleServo return:True getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,ab,1b,cb,] True pos=7083 setSingleServo( id=01, sio=01, pos=1d4c 7500, fram=001e) runSingleServoCmd( idNum=01, sioNum=01, pos=1d4c 7500, frame=001e) synchronizedAck( txData=[07,0f,02,1e,4c,1d,9f,] ) sendData->[07,0f,02,1e,4c,1d,9f,] readData-->[04,0f,06,19,] setSingleServo return:True getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,eb,1d,0d,] True pos=7659 getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,eb,1d,0d,] True pos=7659 setFreeSingleServo( id=01, sio=01) setSingleServo( id=01, sio=01, pos=8000 32768, fram=0001) runSingleServoCmd( idNum=01, sioNum=01, pos=8000 32768, frame=0001) synchronizedAck( txData=[07,0f,02,01,00,80,99,] ) sendData->[07,0f,02,01,00,80,99,] readData-->[04,0f,06,19,] getSinglePos( id=01, sio=01) moveDevicetoComCmdSynchronize( icsNum=02, offset=04, dataSize=02) moveDevicetoComCmd( icsNum=02, offset=04, dataSize=02) sendData->[0a,00,21,00,00,00,04,02,02,33,] readData-->[05,00,eb,1d,0d,] True pos=7659 ---- #counter