From a6429d3b76303c01397f2e57e3ced9a729dde55e Mon Sep 17 00:00:00 2001 From: Stefan Helmert Date: Tue, 25 Feb 2014 02:28:15 +0100 Subject: [PATCH] using wansview cam tilt and pan --- UDPclient.depend | 41 +++++++++++++++++++ bin/Debug/UDPclient | Bin 29906 -> 45361 bytes client.config | 2 + main.c | 91 ++++++++++++++++++++++++++++++++++++++++--- main.h | 0 obj/Debug/henglong.o | Bin 7144 -> 11672 bytes obj/Debug/main.o | Bin 20736 -> 41464 bytes obj/Debug/wansview.o | Bin 0 -> 14280 bytes wansview.c | 71 +++++++++++++++++++++++++++++++++ wansview.h | 17 ++++++++ 10 files changed, 217 insertions(+), 5 deletions(-) create mode 100644 main.h create mode 100644 obj/Debug/wansview.o create mode 100644 wansview.c create mode 100644 wansview.h diff --git a/UDPclient.depend b/UDPclient.depend index 2e47e21..471f30b 100644 --- a/UDPclient.depend +++ b/UDPclient.depend @@ -60,3 +60,44 @@ 1392494235 source:/home/chch/HengLongUDPclient/henglong.c "henglong.h" +1393274981 source:/home/stefan/Proj/HengLongUDPclient/henglong.c + "henglong.h" + +1393274981 /home/stefan/Proj/HengLongUDPclient/henglong.h + + + + +1393291221 source:/home/stefan/Proj/HengLongUDPclient/main.c + + + + + + + + + + + + + + + + + + + + "henglong.h" + + "wansview.h" + +1393285475 /home/stefan/Proj/HengLongUDPclient/wansview.h + + + + + +1393290504 source:/home/stefan/Proj/HengLongUDPclient/wansview.c + "wansview.h" + diff --git a/bin/Debug/UDPclient b/bin/Debug/UDPclient index 649fc1bcc03526f9d91dcee54d7634c1adfe9ec2..7ac107e31a838cc88b6af28d6f4b35bb85c556c0 100755 GIT binary patch literal 45361 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 literal 29906 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 ZAF-g{?KC9UGEMk1o{{uc$rKJD> diff --git a/client.config b/client.config index 844644d..acf2378 100644 --- a/client.config +++ b/client.config @@ -1,5 +1,7 @@ KEYBOARD /dev/input/event2 JOYSTICK /dev/input/js0 +CAM 192.168.1.23 +CAMINTERVAL 100000 FRAME_US 100000 SERVER 10.8.245.47:32000 TIMEOUT 250 diff --git a/main.c b/main.c index 6f2576a..ec7e44c 100644 --- a/main.c +++ b/main.c @@ -21,6 +21,8 @@ #include #include "henglong.h" #include +#include "wansview.h" + typedef struct outtty_t { @@ -113,7 +115,6 @@ void *keyboard_thread_fcn(void * arg) pthread_exit(0); } - void *joystick_thread_fcn(void * arg) { printf("pthread input started\n"); @@ -274,6 +275,8 @@ typedef struct henglongconf_t char keyboarddevname[256]; char joystickdevname[256]; in_addr_t ip; // v4 only + char cam[64]; + uint32_t caminterval; uint16_t port; uint8_t timeout; uint8_t clinbr; @@ -295,7 +298,8 @@ henglongconf_t getconfig(char* conffilename) conf.ip = inet_addr("127.0.0.1"); conf.keyboarddevname[0] = 0; conf.joystickdevname[0] = 0; - + conf.cam[0] = 0; + conf.caminterval = 100000; while(fgets(line, 256, configFile)){ sscanf(line, "%16s %256s", parameter, value); if(0==strcmp(parameter,"KEYBOARD")){ @@ -304,6 +308,12 @@ henglongconf_t getconfig(char* conffilename) if(0==strcmp(parameter,"JOYSTICK")){ sscanf(value, "%256s", conf.joystickdevname); } + if(0==strcmp(parameter,"CAM")){ + sscanf(value, "%64s", conf.cam); + } + if(0==strcmp(parameter,"CAMINTERVAL")){ + sscanf(value, "%" SCNu32, &conf.caminterval); + } if(0==strcmp(parameter,"FRAME_US")){ sscanf(value, "%" SCNu32 , &conf.frame_us); } @@ -322,12 +332,44 @@ henglongconf_t getconfig(char* conffilename) } +typedef struct cam_ctrl_thread_t +{ + char* ip; + int up, down, cw, ccw, end; + uint32_t caminterval; +} cam_ctrl_thread_t; + + +void *cam_ctrl_thread_fcn(void* arg) +{ + printf("pthread cam_ctrl started\n"); + + cam_ctrl_thread_t* args; + + args = (cam_ctrl_thread_t*) arg; + + while(!args->end){ + usleep(args->caminterval); + if(args->up) cam_up(args->ip); + if(args->down) cam_down(args->ip); + if(args->cw) cam_cw(args->ip); + if(args->ccw) cam_ccw(args->ip); + } + + pthread_exit(0); +} + + int main(int argc, char* argv[]) { - pthread_t keybthread, joythread, refl_thread; + + + + pthread_t keybthread, joythread, refl_thread, cam_ctrl_thread; input_thread_t keyboard_thread_args; input_thread_t joystick_thread_args; refl_thread_args_t refl_thread_args; + cam_ctrl_thread_t cam_ctrl_thread_args; int frame = 0; uint16_t frame_nbr; int sockfd, n_send; @@ -335,6 +377,7 @@ int main(int argc, char* argv[]) uint64_t time_us; henglongconf_t conf; RCdatagram_t senddata; + int updown, cwccw; if(2!=argc){ printf("\nThis program is intented to be run on the PC as client to control the server on the heng long tank. \n\n USAGE: UDPclient client.config\n\n Copyright (C) 2014 Stefan Helmert \n\n"); @@ -361,6 +404,19 @@ int main(int argc, char* argv[]) }else{ printf("no joystick!\n"); } + if(conf.cam[0]){ + cam_ctrl_thread_args.down = 0; + cam_ctrl_thread_args.up = 0; + cam_ctrl_thread_args.cw = 0; + cam_ctrl_thread_args.ccw = 0; + cam_ctrl_thread_args.end = 0; + cam_ctrl_thread_args.ip = conf.cam; + cam_ctrl_thread_args.caminterval = conf.caminterval; + if (pthread_create(&cam_ctrl_thread, NULL, cam_ctrl_thread_fcn , (void *) &cam_ctrl_thread_args)) printf("failed to create cam_ctrl thread\n"); + }else{ + printf("no cam config!\n"); + } + sockfd = socket(AF_INET,SOCK_DGRAM,0); @@ -398,8 +454,33 @@ int main(int argc, char* argv[]) senddata.outtty.motor_l = keyboard_thread_args.outtty.motor_l + joystick_thread_args.outtty.motor_l; senddata.outtty.motor_r = keyboard_thread_args.outtty.motor_r + joystick_thread_args.outtty.motor_r; - senddata.outtty.servo_pan += keyboard_thread_args.hl.pan_right - keyboard_thread_args.hl.pan_left + joystick_thread_args.hl.pan_right - joystick_thread_args.hl.pan_left; - senddata.outtty.servo_tilt += keyboard_thread_args.hl.tilt_up - keyboard_thread_args.hl.tilt_down + joystick_thread_args.hl.tilt_up - joystick_thread_args.hl.tilt_down; + cwccw = keyboard_thread_args.hl.pan_right - keyboard_thread_args.hl.pan_left + joystick_thread_args.hl.pan_right - joystick_thread_args.hl.pan_left; + updown = keyboard_thread_args.hl.tilt_up - keyboard_thread_args.hl.tilt_down + joystick_thread_args.hl.tilt_up - joystick_thread_args.hl.tilt_down; + + senddata.outtty.servo_pan += cwccw; + senddata.outtty.servo_tilt += updown; + + if(+1<=cwccw) { + cam_ctrl_thread_args.ccw = 1; + cam_ctrl_thread_args.cw = 0; + }else if(-1>=cwccw){ + cam_ctrl_thread_args.ccw = 0; + cam_ctrl_thread_args.cw = 1; + }else{ + cam_ctrl_thread_args.ccw = 0; + cam_ctrl_thread_args.cw = 0; + } + if(+1<=updown) { + cam_ctrl_thread_args.up = 1; + cam_ctrl_thread_args.down = 0; + }else if(-1>=updown){ + cam_ctrl_thread_args.up = 0; + cam_ctrl_thread_args.down = 1; + }else{ + cam_ctrl_thread_args.up = 0; + cam_ctrl_thread_args.down = 0; + } + if(keyboard_thread_args.hl.ignation | joystick_thread_args.hl.ignation){ senddata.outtty.servo_pan = 0; diff --git a/main.h b/main.h new file mode 100644 index 0000000..e69de29 diff --git a/obj/Debug/henglong.o b/obj/Debug/henglong.o index 5c890b8979f9c73147000f34a4ea99c57999d189..2f9e69a084c52f9d3ff4984080e13affb14fcec5 100644 GIT binary patch literal 11672 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 diff --git a/obj/Debug/main.o b/obj/Debug/main.o index 3ca2d68f0d3db6d78b8474229df17e4f24272653..d8f21b0237654315642721fe825acd81243c9cda 100644 GIT binary patch literal 41464 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 z

+zOUE`eWAXyyZ5B4#rM6I{D9(9Nq|>Bmbu6Ze+FD3ZyBOa`_aI9_qDp;eb)o@z z8E!#EU9Mfdx(%yDnw0mzG!j!P+JFQXeVaOGP2ZG7il!C5?`>}8ie40LiHC}?928sULt7g9m9`BYxL8frO0-vw?xq5 z;@1Tv`FsW-vEJXZT{NF+cQeZA_L2ywA3Xc8WjBJ6ZtoG;V|QtfLu2>jc9iWp zD5{^s-nA^qVax6XZI>x>7bx{R8j-`6-3>au-GgYClWnHkJ648Yv}_}gr4>P) zJJR{4`s>+q6530bl1^`dwB2i~mJ=^B(+_8Am9XV$0|l0|N2EwIW6vE_;rLi#)J340qC!N|00iZ9m9egq{rC=ko44Ebb9(w zUfD~&05sd;{gmwmd&#fsMe{2x`=C9}Py0U0`nQ6%@3Ex2Y-J$ze}L1z$5Q@aFZr)Q z+xJz<`A4Dl!TN`70!aGBUNryK&^{=C&nAGRKgVg`cWM8tUh>Se6r=vYUi64wbY3rd zVlUc$pLxFL1pI|m%zF5dx01mS{vZkuPuS>TcdFl(;7!FEJjb-)<;3}R=X&#BqHpuO zlvuaVrk1*R1Ut0UW=$Tw0Nlp5gzIZJ^ms<&Q%mYeA6oMEAgrIv_+Hk2snLX&7Z+WG zC;qxxzAJ#Le#+r3oSx#@2#=Y3deW`iPw%P69P5vx^d=Zj@QGL?6l%rRJ6a#dBe}f! zS<@83O@uSc!1U#eaSX8T%MK9J$j?*?%ai6;5wVc1B@VRKEY|xoY5X|20=Z3^AFYvY z5jsv9c5fzPG5jtOc77=GAB+5PBHH~e`Dpj|!he$p{ZEK!cPN%3wv!KJI}3?Jm0C_5 zrqn$m{}E}l%Re=6U{j*M4@LVgk%m1tmN3UCrLG3j-fGg&zmw=kz7t2{-Uk`|83JT` z*OA7#f%I7PL+Brq&Qt1Lp+6)Yz#J8tAC$A+U?BNTM(qy)C3U&P3ek4-heK{rg&WM*=x+pJf5D2PyGb{ELC) zFC!Kz)kZ`d;EFQPHb`Y)Z^(Ns5vivP3Z z6V#u=ga5kFCj>tgYCs zpE=O}8Nt3-FG=SMmI_`XxIl1~V1po^@mNoPwh!zUntLen9~OLCklzZB&-I%4pMs|Z z&kBy_dJ6eO!5M;=3SJ?Y5bO}#DR{r&uLYkIPG92~HB6PQ)58Q;>hfY@qIHkw=7H zEA(c;y9DnO`TasaL4>`h1z!>Qn?k=Wn2Gxj_4*19C8FItp)U|D5&j$^`msRxiv^d8 z{CbgZ6}(&U7euu4E5V~gwDXG4uMu&6CG_8gcHv$|Js%P64kp6RaKYKapC@#+U=0!V z8buxx{`G=4ihP&Ie=hVdgx)WBRQN9l{U^Z_!v9d{&xAfLv;)4f{XRsTLy7Qvq~Jm# z~$Ams2cwF#P!AxwdX|FF4?M)=Y z-W1`N3eF~?&V0dTMCg56G>yMCe~8xJcwHL>?AQ2zChW z6#S{+=fm8x(7G$p8QV diff --git a/obj/Debug/wansview.o b/obj/Debug/wansview.o new file mode 100644 index 0000000000000000000000000000000000000000..1b1424b5567a150aeb1891704ecc65bdd7bac3c2 GIT binary patch literal 14280 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 p%9E<(AE9yUxG8&;tXqCS!+BjKG@SErkB0L+ 0) + { + } + + + if(n < 0) + { + printf("\n Read error \n"); + } + close(sockfd); + return 0; +} + +int cam_down(char* ip) +{ + return wvcamctrl(ip, 0); +} + +int cam_up(char* ip) +{ + return wvcamctrl(ip, 2); +} + +int cam_cw(char* ip) +{ + return wvcamctrl(ip, 4); +} + +int cam_ccw(char* ip) +{ + return wvcamctrl(ip, 6); +} diff --git a/wansview.h b/wansview.h new file mode 100644 index 0000000..1c0b9f8 --- /dev/null +++ b/wansview.h @@ -0,0 +1,17 @@ +#ifndef WANSVIEW_H_INCLUDED +#define WANSVIEW_H_INCLUDED + +#include +#include +#include +#include + + + +int wvcamctrl(char* ip, int cmd); +int cam_down(char* ip); +int cam_up(char* ip); +int cam_cw(char* ip); +int cam_ccw(char* ip); + +#endif // WANSVIEW_H_INCLUDED