#author("2026-05-03T23:59:32+09:00","default:TESLA2","TESLA2")
#author("2026-05-04T00:04:03+09:00","default:TESLA2","TESLA2")
[[Rcb4_ex02.py]]

** Rcb4_ex03.py [#g3c4e1bc]

- 2026 5/3 以下の Rcb4_ex03.py で Servo モータ1個動作。
-- Rcb4_ex01.pyが動作しなかったのは Rcb4BaseLib.py の setPosはRcb4Mminiでは動かないと推定, Heart To Heart の送受信のlogを見ると, 0xff cmd (servo 動作)ではなく 0x00 cmd (move命令)を使っているので、それを参考に作成 

#code(Python){{
#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())

sio=0x01
(tf,pos)=rcb4.getSinglePos(1,sio)
print(tf,end="")
print(' pos=',end="")
print(pos)

rtn=rcb4.setPos2(1,1,7500)

time.sleep(0.5)

sio=0x01
(tf, pos)=rcb4.getSinglePos(1,sio)
print(tf,end="")
print(' pos=',end="")
print(pos)


rtn=rcb4.setPos2(1,1,4000)

time.sleep(0.5)

sio=0x01
(tf, pos)=rcb4.getSinglePos(1,sio)
print(tf,end="")
print(' pos=',end="")
print(pos)


rtn=rcb4.setPos2(1,1,7500)

time.sleep(0.5)


sio=0x01
(tf, pos)=rcb4.getSinglePos(1,sio)
print(tf,end="")
print(' pos=',end="")
print(pos)

rtn=rcb4.setPos2(1,1,11000)

time.sleep(0.5)

sio=0x01
(tf, pos)=rcb4.getSinglePos(1,sio)
print(tf,end="")
print(' pos=',end="")
print(pos)

rtn=rcb4.setPos2(1,1,7500)

time.sleep(0.5)

sio=0x01
(tf, pos)=rcb4.getSinglePos(1,sio)
print(tf,end="")
print(' pos=',end="")
print(pos)

rcb4.close()

}}
----
** Rcb4BaseLib.py に def setPos2(...):を追加 [#u6e18ded]
** setPos2 [#nfa932d4]
- Rcb4BaseLib.py に def setPos2(...):を追加 [#u6e18ded]
#code(Python){{
def setPos2 (self, id, sio, position):
        print(f"setPos2( id={id:02x}, sio={sio:02x},position={position:04x} {position})")
 
        data_l=position & 0xff
        position=position>>8
        data_h=position & 0xff
        buf=[]
        buf.append(data_l)
        buf.append(data_h)
        buf.append(0x00)
        icsNum=id*2+(sio-1)
        rtn=self.moveComToDeviceCmdSynchronize(icsNum, 0x06, buf)
        return rtn
}}
----
** 実行結果 [#r37358d9]

 (testpip) pi@rpi-202603261445:~/python/RCB4Lib_for_Python_V100B/sample $ python3 Rcb4_ex03.py
 open comName=/dev/ttyUSB0 bundrate=115200 timOut=1.3
 self.com=Serial<id=0xb66ee700, 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,32,01,01,00,02,00,02,00,01,00,01,00,22,00,25,00,22,00,22,00,24,00,02,]
 (True, [306, 1, 2, 2, 1, 1, 34, 37, 34, 34, 36])
 voltage moveRamToComCmdSynchronize( scrAddr=22, scrDataSize=02)
 sendData->[0a,00,20,00,00,00,22,00,02,4e,]
 readData-->[05,00,32,01,38,]
 7.3212890625
 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
 setPos2( id=01, sio=01,position=1d4c 7500)
 moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData)
 destData=[4c,1d,00,]
 moveComToDeviceCmd( icsNum=02, offset=06,destData)
 destData=[4c,1d,00,]
 sendData->[0a,00,12,06,02,00,4c,1d,00,8d,]
 readData-->[04,00,06,0a,]
 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
 setPos2( id=01, sio=01,position=0fa0 4000)
 moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData)
 destData=[a0,0f,00,]
 moveComToDeviceCmd( icsNum=02, offset=06,destData)
 destData=[a0,0f,00,]
 sendData->[0a,00,12,06,02,00,a0,0f,00,d3,]
 readData-->[04,00,06,0a,]
 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,c6,0f,da,]
 True pos=4038
 setPos2( id=01, sio=01,position=1d4c 7500)
 moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData)
 destData=[4c,1d,00,]
 moveComToDeviceCmd( icsNum=02, offset=06,destData)
 destData=[4c,1d,00,]
 sendData->[0a,00,12,06,02,00,4c,1d,00,8d,]
 readData-->[04,00,06,0a,]
 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,48,1d,6a,]
 True pos=7496
 setPos2( id=01, sio=01,position=2af8 11000)
 moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData)
 destData=[f8,2a,00,]
 moveComToDeviceCmd( icsNum=02, offset=06,destData)
 destData=[f8,2a,00,]
 sendData->[0a,00,12,06,02,00,f8,2a,00,46,]
 readData-->[04,00,06,0a,]
 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,2a,1a,]
 True pos=10987
 setPos2( id=01, sio=01,position=1d4c 7500)
 moveComToDeviceCmdSynchronize( icsNum=02, offset=06,destData)
 destData=[4c,1d,00,]
 moveComToDeviceCmd( icsNum=02, offset=06,destData)
 destData=[4c,1d,00,]
 sendData->[0a,00,12,06,02,00,4c,1d,00,8d,]
 readData-->[04,00,06,0a,]
 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
 (testpip) pi@rpi-202603261445:~/python/RCB4Lib_for_Python_V100B/sample $

----
#counter

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