aboutsummaryrefslogtreecommitdiffstats
path: root/serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'serial.c')
-rw-r--r--serial.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/serial.c b/serial.c
index 6251675..6b4eb72 100644
--- a/serial.c
+++ b/serial.c
@@ -10,6 +10,7 @@
10 10
11typedef unsigned char byte; 11typedef unsigned char byte;
12#define MAX_BUFFER_SIZE 1024 12#define MAX_BUFFER_SIZE 1024
13#define DEFAULT_SPEED 0x15
13 14
14int fd; // 轮子的串口文件描述符 15int fd; // 轮子的串口文件描述符
15char portname[50] = "/dev/ttyUSB0"; // 串口设备名 16char portname[50] = "/dev/ttyUSB0"; // 串口设备名
@@ -19,18 +20,24 @@ struct termios tty;
19bool whellInit(); 20bool whellInit();
20bool wheelSend(byte a, byte a_v, byte b, byte b_v); 21bool wheelSend(byte a, byte a_v, byte b, byte b_v);
21void speedControl(byte status, byte speed); 22void speedControl(byte status, byte speed);
22void parseCmd(const path_ctrl_t *msg, void *user); 23void parseCmd(const lcm_recv_buf_t *rbuf, const char *channel,
24 const path_ctrl_t *msg, void *userdata);
23 25
24int main() { 26int main() {
25 if (!whellInit()) { 27 if (!whellInit()) {
26 goto err; 28 goto err;
27 } 29 }
28 lcm *path_lcm = lcm_create(NULL); 30 lcm_t *path_lcm = lcm_create(NULL);
29 if (!path_lcm) { 31 if (!path_lcm) {
30 fprintf(stderr, "Failed to create LCM\n"); 32 fprintf(stderr, "Failed to create LCM\n");
31 goto err; 33 goto err;
32 } 34 }
33 path_ctrl_t_subscribe(path_lcm, "PATH_CTRL", parseCmd); 35 path_ctrl_t cmd;
36 path_ctrl_t_subscribe(path_lcm, "wheel_ctrl", parseCmd, &cmd);
37
38 while (true) {
39 lcm_handle(path_lcm);
40 }
34 41
35err: 42err:
36 close(fd); 43 close(fd);
@@ -102,17 +109,18 @@ bool wheelSend(byte a, byte a_v, byte b, byte b_v) {
102 return true; 109 return true;
103} 110}
104 111
105void parseCmd(const path_ctrl_t *msg, void *user) { 112void parseCmd(const lcm_recv_buf_t *rbuf, const char *channel,
113 const path_ctrl_t *msg, void *userdata) {
106 byte status = msg->cmd, speed = msg->speed; 114 byte status = msg->cmd, speed = msg->speed;
107 switch (status) { 115 switch (status) {
108 case 1: 116 case 1:
109 wheelSend(0x01, speed, 0x01, speed); 117 wheelSend(0x01, speed, 0x01, speed);
110 break; 118 break;
111 case 2: 119 case 2:
112 wheelSend(0x02, speed, 0x01, speed); 120 wheelSend(0x02, DEFAULT_SPEED, 0x01, DEFAULT_SPEED);
113 break; 121 break;
114 case 3: 122 case 3:
115 wheelSend(0x01, speed, 0x02, speed); 123 wheelSend(0x01, DEFAULT_SPEED, 0x02, DEFAULT_SPEED);
116 break; 124 break;
117 case 0: 125 case 0:
118 default: 126 default: