#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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS