Dominik Święch
/
JakKrisowy_
.
Fork of JakKrisowy by
main.cpp@1:1e01b12063cd, 2016-07-14 (annotated)
- Committer:
- yruiewyrui3
- Date:
- Thu Jul 14 13:31:01 2016 +0000
- Revision:
- 1:1e01b12063cd
- Parent:
- 0:f3a3f80e3202
.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yruiewyrui3 | 0:f3a3f80e3202 | 1 | //*****biblioteki***** |
yruiewyrui3 | 0:f3a3f80e3202 | 2 | |
yruiewyrui3 | 0:f3a3f80e3202 | 3 | #include "mbed.h" |
yruiewyrui3 | 0:f3a3f80e3202 | 4 | #include "Engine.h" |
yruiewyrui3 | 0:f3a3f80e3202 | 5 | #include "Servo.h" |
yruiewyrui3 | 0:f3a3f80e3202 | 6 | #include "HCSR04.h" |
yruiewyrui3 | 0:f3a3f80e3202 | 7 | |
yruiewyrui3 | 0:f3a3f80e3202 | 8 | //*****piny***** |
yruiewyrui3 | 0:f3a3f80e3202 | 9 | |
yruiewyrui3 | 0:f3a3f80e3202 | 10 | Serial stm(PA_2, PA_3); |
yruiewyrui3 | 0:f3a3f80e3202 | 11 | Servo cam_horizontal(PB_6); |
yruiewyrui3 | 0:f3a3f80e3202 | 12 | Servo cam_vertical(PC_7); |
yruiewyrui3 | 0:f3a3f80e3202 | 13 | Engine eng_left = Engine(PB_13, PB_4, PB_10); |
yruiewyrui3 | 0:f3a3f80e3202 | 14 | Engine eng_right = Engine(PB_14, PB_5, PB_3); |
yruiewyrui3 | 0:f3a3f80e3202 | 15 | HCSR04 sensor(PB_9, PB_8, 11770); |
yruiewyrui3 | 0:f3a3f80e3202 | 16 | |
yruiewyrui3 | 0:f3a3f80e3202 | 17 | //*****deklaracja zmiennych***** |
yruiewyrui3 | 0:f3a3f80e3202 | 18 | |
yruiewyrui3 | 0:f3a3f80e3202 | 19 | const int BufferSize=15; |
yruiewyrui3 | 0:f3a3f80e3202 | 20 | char buffer1[BufferSize]; |
yruiewyrui3 | 0:f3a3f80e3202 | 21 | char buffer2[BufferSize]; |
yruiewyrui3 | 0:f3a3f80e3202 | 22 | char camove[2]; |
yruiewyrui3 | 1:1e01b12063cd | 23 | char tablicaf[4]; |
yruiewyrui3 | 0:f3a3f80e3202 | 24 | int wall=30; // odleglosc od sciany w cm |
yruiewyrui3 | 0:f3a3f80e3202 | 25 | int act_vertical=0, act_horizontal=0, move=0, val=0; |
yruiewyrui3 | 1:1e01b12063cd | 26 | Timer t, t_sonar, t_fidu; |
yruiewyrui3 | 0:f3a3f80e3202 | 27 | long distance; |
yruiewyrui3 | 0:f3a3f80e3202 | 28 | volatile unsigned int speed_car = 0; |
yruiewyrui3 | 0:f3a3f80e3202 | 29 | |
yruiewyrui3 | 0:f3a3f80e3202 | 30 | //*****funkcje***** |
yruiewyrui3 | 0:f3a3f80e3202 | 31 | |
yruiewyrui3 | 0:f3a3f80e3202 | 32 | void cleanBuffer1() // czyszczaca bufor |
yruiewyrui3 | 0:f3a3f80e3202 | 33 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 34 | for(int i=0; i<=BufferSize; i++) |
yruiewyrui3 | 0:f3a3f80e3202 | 35 | buffer1[i]=NULL; |
yruiewyrui3 | 0:f3a3f80e3202 | 36 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 37 | |
yruiewyrui3 | 0:f3a3f80e3202 | 38 | void cleanBuffer2() // czyszczaca bufor2 |
yruiewyrui3 | 0:f3a3f80e3202 | 39 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 40 | for(int i=0; i<=BufferSize; i++) |
yruiewyrui3 | 0:f3a3f80e3202 | 41 | buffer2[i]=NULL; |
yruiewyrui3 | 0:f3a3f80e3202 | 42 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 43 | |
yruiewyrui3 | 0:f3a3f80e3202 | 44 | int what_command(char* buffer1){ // rozpoznajaca komende |
yruiewyrui3 | 0:f3a3f80e3202 | 45 | if ((buffer1[0]=='f') && (distance>30)) |
yruiewyrui3 | 0:f3a3f80e3202 | 46 | return 1; |
yruiewyrui3 | 0:f3a3f80e3202 | 47 | else if ((buffer1[0]=='t') && (distance>30)) |
yruiewyrui3 | 0:f3a3f80e3202 | 48 | if (buffer1[2]=='l') |
yruiewyrui3 | 0:f3a3f80e3202 | 49 | return 2; |
yruiewyrui3 | 0:f3a3f80e3202 | 50 | else |
yruiewyrui3 | 0:f3a3f80e3202 | 51 | return 3; |
yruiewyrui3 | 0:f3a3f80e3202 | 52 | else if (buffer1[0]=='b') |
yruiewyrui3 | 0:f3a3f80e3202 | 53 | return 4; |
yruiewyrui3 | 0:f3a3f80e3202 | 54 | else if (buffer1[0]=='S') |
yruiewyrui3 | 0:f3a3f80e3202 | 55 | return 5; |
yruiewyrui3 | 0:f3a3f80e3202 | 56 | else if (buffer1[0]=='l') |
yruiewyrui3 | 0:f3a3f80e3202 | 57 | return 6; |
yruiewyrui3 | 0:f3a3f80e3202 | 58 | else if (buffer1[0]=='r') |
yruiewyrui3 | 0:f3a3f80e3202 | 59 | return 7; |
yruiewyrui3 | 0:f3a3f80e3202 | 60 | else if (buffer1[0]=='v') |
yruiewyrui3 | 0:f3a3f80e3202 | 61 | if (buffer1[4]=='l') |
yruiewyrui3 | 0:f3a3f80e3202 | 62 | return 8; |
yruiewyrui3 | 0:f3a3f80e3202 | 63 | else |
yruiewyrui3 | 0:f3a3f80e3202 | 64 | return 10; |
yruiewyrui3 | 0:f3a3f80e3202 | 65 | else if (buffer1[0]=='h') |
yruiewyrui3 | 0:f3a3f80e3202 | 66 | if (buffer1[4]=='l') |
yruiewyrui3 | 0:f3a3f80e3202 | 67 | return 9; |
yruiewyrui3 | 0:f3a3f80e3202 | 68 | else |
yruiewyrui3 | 0:f3a3f80e3202 | 69 | return 11; |
yruiewyrui3 | 0:f3a3f80e3202 | 70 | else if (buffer1[0]=='_') |
yruiewyrui3 | 0:f3a3f80e3202 | 71 | return 12; |
yruiewyrui3 | 0:f3a3f80e3202 | 72 | else |
yruiewyrui3 | 0:f3a3f80e3202 | 73 | return 0; |
yruiewyrui3 | 0:f3a3f80e3202 | 74 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 75 | |
yruiewyrui3 | 1:1e01b12063cd | 76 | char* intToChar(int value, char tab[3]) |
yruiewyrui3 | 1:1e01b12063cd | 77 | { |
yruiewyrui3 | 1:1e01b12063cd | 78 | tab[0]= (char)(value/100 + 48); |
yruiewyrui3 | 1:1e01b12063cd | 79 | tab[1]= (char)((value-(100*(value/100)))/10 + 48); |
yruiewyrui3 | 1:1e01b12063cd | 80 | tab[2]= (char)(value-(100*(value/100))-(10*((value-(100*(value/100)))/10)) + 48); |
yruiewyrui3 | 1:1e01b12063cd | 81 | tab[3]= ';'; |
yruiewyrui3 | 1:1e01b12063cd | 82 | return tab; |
yruiewyrui3 | 1:1e01b12063cd | 83 | } |
yruiewyrui3 | 1:1e01b12063cd | 84 | |
yruiewyrui3 | 0:f3a3f80e3202 | 85 | void hard_stop() // zatrzymujaca robota |
yruiewyrui3 | 0:f3a3f80e3202 | 86 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 87 | eng_left.move(0); |
yruiewyrui3 | 0:f3a3f80e3202 | 88 | eng_right.move(0); |
yruiewyrui3 | 0:f3a3f80e3202 | 89 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 90 | |
yruiewyrui3 | 0:f3a3f80e3202 | 91 | int map(int value, int from_min, int from_max, int to_min, int to_max) // mapujaca wartosc do skretu |
yruiewyrui3 | 0:f3a3f80e3202 | 92 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 93 | return (value - from_min) * (to_max - to_min)/(from_max - from_min) + to_min; |
yruiewyrui3 | 0:f3a3f80e3202 | 94 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 95 | |
yruiewyrui3 | 0:f3a3f80e3202 | 96 | void move_camera_down(int val) // sterujaca kamera |
yruiewyrui3 | 0:f3a3f80e3202 | 97 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 98 | act_vertical = act_vertical + val; |
yruiewyrui3 | 0:f3a3f80e3202 | 99 | if(act_vertical>90){ |
yruiewyrui3 | 0:f3a3f80e3202 | 100 | act_vertical=90; |
yruiewyrui3 | 0:f3a3f80e3202 | 101 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 102 | cam_vertical.position(act_vertical); |
yruiewyrui3 | 0:f3a3f80e3202 | 103 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 104 | |
yruiewyrui3 | 0:f3a3f80e3202 | 105 | void move_camera_up(int val) // sterujaca kamera |
yruiewyrui3 | 0:f3a3f80e3202 | 106 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 107 | act_vertical = act_vertical - val; |
yruiewyrui3 | 0:f3a3f80e3202 | 108 | if(act_vertical<-90){ |
yruiewyrui3 | 0:f3a3f80e3202 | 109 | act_vertical=-90; |
yruiewyrui3 | 0:f3a3f80e3202 | 110 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 111 | cam_vertical.position(act_vertical); |
yruiewyrui3 | 0:f3a3f80e3202 | 112 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 113 | |
yruiewyrui3 | 0:f3a3f80e3202 | 114 | void move_camera_right(int val) // sterujaca kamera |
yruiewyrui3 | 0:f3a3f80e3202 | 115 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 116 | act_horizontal = act_horizontal - val; |
yruiewyrui3 | 0:f3a3f80e3202 | 117 | if(act_horizontal<-90){ |
yruiewyrui3 | 0:f3a3f80e3202 | 118 | act_horizontal=-90; |
yruiewyrui3 | 0:f3a3f80e3202 | 119 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 120 | cam_horizontal.position(act_horizontal); |
yruiewyrui3 | 0:f3a3f80e3202 | 121 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 122 | |
yruiewyrui3 | 0:f3a3f80e3202 | 123 | void move_camera_left(int val) // sterujaca kamera |
yruiewyrui3 | 0:f3a3f80e3202 | 124 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 125 | act_horizontal = act_horizontal + val; |
yruiewyrui3 | 0:f3a3f80e3202 | 126 | if(act_horizontal>90){ |
yruiewyrui3 | 0:f3a3f80e3202 | 127 | act_horizontal=90; |
yruiewyrui3 | 0:f3a3f80e3202 | 128 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 129 | cam_horizontal.position(act_horizontal); |
yruiewyrui3 | 0:f3a3f80e3202 | 130 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 131 | |
yruiewyrui3 | 0:f3a3f80e3202 | 132 | void set_camera_zero() // zerujaca kamere |
yruiewyrui3 | 0:f3a3f80e3202 | 133 | { |
yruiewyrui3 | 1:1e01b12063cd | 134 | cam_horizontal.position(-8); |
yruiewyrui3 | 1:1e01b12063cd | 135 | cam_vertical.position(-20); |
yruiewyrui3 | 1:1e01b12063cd | 136 | act_horizontal=-8; |
yruiewyrui3 | 1:1e01b12063cd | 137 | act_vertical=-20; |
yruiewyrui3 | 0:f3a3f80e3202 | 138 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 139 | |
yruiewyrui3 | 0:f3a3f80e3202 | 140 | void set_val() // odczytująca wartosc |
yruiewyrui3 | 0:f3a3f80e3202 | 141 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 142 | for (int q=0; q<3; q++){ |
yruiewyrui3 | 0:f3a3f80e3202 | 143 | buffer2[q]=buffer1[q+8]; |
yruiewyrui3 | 0:f3a3f80e3202 | 144 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 145 | sscanf(buffer2, "%3d", &val); |
yruiewyrui3 | 0:f3a3f80e3202 | 146 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 147 | |
yruiewyrui3 | 0:f3a3f80e3202 | 148 | int main(){ |
yruiewyrui3 | 0:f3a3f80e3202 | 149 | stm.baud(115200); |
yruiewyrui3 | 0:f3a3f80e3202 | 150 | cleanBuffer1(); |
yruiewyrui3 | 0:f3a3f80e3202 | 151 | cleanBuffer2(); |
yruiewyrui3 | 0:f3a3f80e3202 | 152 | set_camera_zero(); |
yruiewyrui3 | 0:f3a3f80e3202 | 153 | t_sonar.start(); |
yruiewyrui3 | 1:1e01b12063cd | 154 | t_fidu.start(); |
yruiewyrui3 | 1:1e01b12063cd | 155 | int i=0; |
yruiewyrui3 | 0:f3a3f80e3202 | 156 | |
yruiewyrui3 | 0:f3a3f80e3202 | 157 | while(true){ |
yruiewyrui3 | 1:1e01b12063cd | 158 | //stm.printf("Poczatek petli nr %d \n", i); |
yruiewyrui3 | 0:f3a3f80e3202 | 159 | if(t.read_ms()>500) //jesli przez ponad 500ms nie ma nowej ramki, zatrzymujemy robota |
yruiewyrui3 | 0:f3a3f80e3202 | 160 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 161 | eng_left.move(0); |
yruiewyrui3 | 0:f3a3f80e3202 | 162 | eng_right.move(0); |
yruiewyrui3 | 0:f3a3f80e3202 | 163 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 164 | if(t_sonar.read_ms()>1000) //odczyt odleglosci co 1,2s |
yruiewyrui3 | 0:f3a3f80e3202 | 165 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 166 | distance = sensor.distance(); |
yruiewyrui3 | 1:1e01b12063cd | 167 | //stm.printf("distance z czujnika: %d\n",distance); |
yruiewyrui3 | 0:f3a3f80e3202 | 168 | |
yruiewyrui3 | 0:f3a3f80e3202 | 169 | t_sonar.stop(); |
yruiewyrui3 | 0:f3a3f80e3202 | 170 | t_sonar.reset(); |
yruiewyrui3 | 0:f3a3f80e3202 | 171 | t_sonar.start(); |
yruiewyrui3 | 0:f3a3f80e3202 | 172 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 173 | while(stm.readable()){ |
yruiewyrui3 | 1:1e01b12063cd | 174 | |
yruiewyrui3 | 1:1e01b12063cd | 175 | /*stm.gets(buffer1, 13); |
yruiewyrui3 | 1:1e01b12063cd | 176 | stm.puts(buffer1); |
yruiewyrui3 | 1:1e01b12063cd | 177 | break;}*/ |
yruiewyrui3 | 1:1e01b12063cd | 178 | |
yruiewyrui3 | 1:1e01b12063cd | 179 | for (int x=0; x<12; x++){ |
yruiewyrui3 | 1:1e01b12063cd | 180 | if(t_fidu.read_ms()>1000){ |
yruiewyrui3 | 1:1e01b12063cd | 181 | stm.printf("urywam;"); |
yruiewyrui3 | 1:1e01b12063cd | 182 | t_fidu.stop(); |
yruiewyrui3 | 1:1e01b12063cd | 183 | t_fidu.reset(); |
yruiewyrui3 | 1:1e01b12063cd | 184 | break;} |
yruiewyrui3 | 1:1e01b12063cd | 185 | buffer1[x]=stm.getc(); |
yruiewyrui3 | 1:1e01b12063cd | 186 | if(buffer1[x]==';'){ |
yruiewyrui3 | 1:1e01b12063cd | 187 | t_fidu.stop(); |
yruiewyrui3 | 1:1e01b12063cd | 188 | t_fidu.reset(); |
yruiewyrui3 | 1:1e01b12063cd | 189 | t_fidu.start(); |
yruiewyrui3 | 1:1e01b12063cd | 190 | break;} |
yruiewyrui3 | 1:1e01b12063cd | 191 | } |
yruiewyrui3 | 1:1e01b12063cd | 192 | stm.puts(buffer1); |
yruiewyrui3 | 0:f3a3f80e3202 | 193 | break;} |
yruiewyrui3 | 0:f3a3f80e3202 | 194 | |
yruiewyrui3 | 0:f3a3f80e3202 | 195 | set_val(); |
yruiewyrui3 | 0:f3a3f80e3202 | 196 | |
yruiewyrui3 | 0:f3a3f80e3202 | 197 | t.stop(); |
yruiewyrui3 | 0:f3a3f80e3202 | 198 | t.reset(); |
yruiewyrui3 | 0:f3a3f80e3202 | 199 | t.start(); |
yruiewyrui3 | 0:f3a3f80e3202 | 200 | switch (what_command(buffer1)) |
yruiewyrui3 | 0:f3a3f80e3202 | 201 | { |
yruiewyrui3 | 0:f3a3f80e3202 | 202 | case 1: |
yruiewyrui3 | 0:f3a3f80e3202 | 203 | eng_left.move(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 204 | eng_right.move(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 205 | set_camera_zero(); |
yruiewyrui3 | 0:f3a3f80e3202 | 206 | speed_car = val; |
yruiewyrui3 | 0:f3a3f80e3202 | 207 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 208 | case 2: |
yruiewyrui3 | 0:f3a3f80e3202 | 209 | eng_right.move(speed_car); |
yruiewyrui3 | 1:1e01b12063cd | 210 | eng_left.move(speed_car - map(val, 0, 100, 0, speed_car)); |
yruiewyrui3 | 1:1e01b12063cd | 211 | cam_horizontal.position(7); |
yruiewyrui3 | 1:1e01b12063cd | 212 | cam_vertical.position(-20); |
yruiewyrui3 | 0:f3a3f80e3202 | 213 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 214 | case 3: |
yruiewyrui3 | 0:f3a3f80e3202 | 215 | eng_left.move(speed_car); |
yruiewyrui3 | 1:1e01b12063cd | 216 | eng_right.move(speed_car - map(val, 0, 100, 0, speed_car)); |
yruiewyrui3 | 1:1e01b12063cd | 217 | cam_horizontal.position(-23); |
yruiewyrui3 | 1:1e01b12063cd | 218 | cam_vertical.position(-20); |
yruiewyrui3 | 0:f3a3f80e3202 | 219 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 220 | case 4: |
yruiewyrui3 | 0:f3a3f80e3202 | 221 | eng_left.move(-val); |
yruiewyrui3 | 0:f3a3f80e3202 | 222 | eng_right.move(-val); |
yruiewyrui3 | 0:f3a3f80e3202 | 223 | set_camera_zero(); |
yruiewyrui3 | 1:1e01b12063cd | 224 | speed_car = -val; |
yruiewyrui3 | 0:f3a3f80e3202 | 225 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 226 | case 5: |
yruiewyrui3 | 0:f3a3f80e3202 | 227 | hard_stop(); |
yruiewyrui3 | 0:f3a3f80e3202 | 228 | speed_car = 0; |
yruiewyrui3 | 0:f3a3f80e3202 | 229 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 230 | case 6: |
yruiewyrui3 | 0:f3a3f80e3202 | 231 | eng_left.move(-val); |
yruiewyrui3 | 0:f3a3f80e3202 | 232 | eng_right.move(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 233 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 234 | case 7: |
yruiewyrui3 | 0:f3a3f80e3202 | 235 | eng_left.move(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 236 | eng_right.move(-val); |
yruiewyrui3 | 0:f3a3f80e3202 | 237 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 238 | case 8: |
yruiewyrui3 | 0:f3a3f80e3202 | 239 | move_camera_down(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 240 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 241 | case 9: |
yruiewyrui3 | 0:f3a3f80e3202 | 242 | move_camera_left(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 243 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 244 | case 10: |
yruiewyrui3 | 0:f3a3f80e3202 | 245 | move_camera_up(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 246 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 247 | case 11: |
yruiewyrui3 | 0:f3a3f80e3202 | 248 | move_camera_right(val); |
yruiewyrui3 | 0:f3a3f80e3202 | 249 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 250 | case 12: |
yruiewyrui3 | 1:1e01b12063cd | 251 | set_camera_zero(); |
yruiewyrui3 | 0:f3a3f80e3202 | 252 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 253 | default: |
yruiewyrui3 | 1:1e01b12063cd | 254 | //stm.printf("unknown_command \n"); |
yruiewyrui3 | 0:f3a3f80e3202 | 255 | break; |
yruiewyrui3 | 0:f3a3f80e3202 | 256 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 257 | cleanBuffer1(); |
yruiewyrui3 | 0:f3a3f80e3202 | 258 | cleanBuffer2(); |
yruiewyrui3 | 0:f3a3f80e3202 | 259 | |
yruiewyrui3 | 1:1e01b12063cd | 260 | i++; |
yruiewyrui3 | 0:f3a3f80e3202 | 261 | |
yruiewyrui3 | 1:1e01b12063cd | 262 | //wait_ms(200); |
yruiewyrui3 | 0:f3a3f80e3202 | 263 | } |
yruiewyrui3 | 0:f3a3f80e3202 | 264 | } |