Skip to content

Commit 497bf23

Browse files
authored
Merge pull request #72 from MK16kawai/dev
add modbus.Master
2 parents 3538a56 + 36f48d9 commit 497bf23

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
from maix import ext_dev, display, camera, pinmap, time, err, app
2+
import threading
3+
4+
### MODE
5+
MODE_SHOW_PICTURE = 0
6+
MODE_SHOW_VIDEO = 1
7+
8+
# If you have high frame requirement,
9+
# please use cdk, refer to MaixCDK/example/maix_tmc2209_2axis_scan.
10+
11+
### Change mode according to your needs
12+
MODE = MODE_SHOW_PICTURE
13+
14+
if __name__ == "__main__":
15+
16+
if MODE == MODE_SHOW_PICTURE:
17+
print("Mode: show picture")
18+
elif MODE == MODE_SHOW_VIDEO:
19+
print("Mode: show video")
20+
else:
21+
print("Error Mode: ", MODE)
22+
exit(-1)
23+
24+
cam = camera.Camera(512, 320)
25+
disp = display.Display()
26+
27+
port = "/dev/ttyS1"
28+
uart_baudrate = 115200
29+
30+
uart_addr_x = 0x00
31+
step_angle_x = 18
32+
micro_step_x = 256
33+
screw_pitch_x = 3.0
34+
speed_x = 1.0
35+
dir_x = True
36+
start_x = 0
37+
stop_x = 20
38+
step_x = 3
39+
40+
uart_addr_y = 0x03
41+
step_angle_y = 18
42+
micro_step_y = 256
43+
screw_pitch_y = 3.0
44+
speed_y = 1.0
45+
dir_y = False
46+
start_y = 0
47+
stop_y = 15
48+
step_y = 3
49+
50+
if pinmap.set_pin_function("A19", "UART1_TX") != err.Err.ERR_NONE:
51+
print("pinmap error!")
52+
exit(-1)
53+
if pinmap.set_pin_function("A18", "UART1_RX") != err.Err.ERR_NONE:
54+
print("pinmap error!")
55+
exit(-1)
56+
57+
slide_x = ext_dev.tmc2209.ScrewSlide(
58+
port,
59+
uart_addr_x,
60+
uart_baudrate,
61+
step_angle_x,
62+
micro_step_x,
63+
screw_pitch_x,
64+
speed_x
65+
)
66+
67+
slide_y = ext_dev.tmc2209.ScrewSlide(
68+
port,
69+
uart_addr_y,
70+
uart_baudrate,
71+
step_angle_y,
72+
micro_step_y,
73+
screw_pitch_y,
74+
speed_y
75+
)
76+
77+
need_exit = False
78+
79+
def one_step_callback():
80+
global need_exit, cam, disp
81+
img = cam.read()
82+
disp.show(img)
83+
return need_exit
84+
85+
def thread_func():
86+
while not app.need_exit():
87+
if one_step_callback():
88+
break
89+
90+
91+
if MODE == MODE_SHOW_VIDEO:
92+
th = threading.Thread(target=thread_func)
93+
th.daemon = True
94+
th.start()
95+
96+
current_x = start_x if dir_x else stop_x
97+
current_y = start_y if dir_y else stop_y
98+
99+
dir_x_ = dir_x
100+
101+
for i in range(0, (stop_y-start_y)//step_y+1):
102+
target_move_y = step_y if i != 0 else 0
103+
target_move_y = target_move_y if dir_y else -target_move_y
104+
slide_y.move(target_move_y)
105+
current_y = current_y + step_y if dir_y else current_y - step_y
106+
107+
for j in range(0, (stop_x-start_x)//2):
108+
target_move_x = step_x if dir_x_ else -step_x
109+
slide_x.move(target_move_x)
110+
current_x += target_move_x
111+
if MODE == MODE_SHOW_PICTURE:
112+
one_step_callback()
113+
if app.need_exit():
114+
break
115+
116+
dir_x_ = False if dir_x_ else True
117+
if app.need_exit():
118+
break
119+
120+
need_exit = True
121+
122+
time.sleep(3)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from maix import pinmap, app, err, time, thread
2+
from maix.comm import modbus
3+
4+
5+
REGISTERS_START_ADDRESS = 0x00
6+
REGISTERS_NUMBER = 10
7+
8+
RTU_SLAVE_ID = 1
9+
RTU_BAUDRATE = 115200
10+
11+
def master_thread(*args):
12+
if pinmap.set_pin_function("A19", "UART1_TX") != err.Err.ERR_NONE:
13+
print("init uart1 failed!")
14+
exit(-1)
15+
if pinmap.set_pin_function("A18", "UART1_RX") != err.Err.ERR_NONE:
16+
print("init uart1 failed!")
17+
exit(-1)
18+
19+
# modbus.set_master_debug(True)
20+
21+
master = modbus.MasterRTU(
22+
"/dev/ttyS1",
23+
RTU_BAUDRATE
24+
)
25+
26+
while not app.need_exit():
27+
hr = master.read_holding_registers(
28+
RTU_SLAVE_ID,
29+
REGISTERS_START_ADDRESS,
30+
REGISTERS_NUMBER,
31+
2000
32+
)
33+
if len(hr) == 0:
34+
continue
35+
print("Master read hr: ", hr)
36+
time.sleep(1)
37+
38+
master_thread(None)

0 commit comments

Comments
 (0)