{"id":617,"date":"2014-02-25T16:22:17","date_gmt":"2014-02-25T07:22:17","guid":{"rendered":"http:\/\/www.gvc-on.net\/?page_id=617"},"modified":"2014-02-25T16:22:17","modified_gmt":"2014-02-25T07:22:17","slug":"%e3%83%87%e3%83%bc%e3%83%a2%e3%83%b3%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0gvcd-c","status":"publish","type":"page","link":"https:\/\/www.gvc-on.net\/?page_id=617","title":{"rendered":"\u30c7\u30fc\u30e2\u30f3\u30d7\u30ed\u30b0\u30e9\u30e0(gvcd.c)"},"content":{"rendered":"<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/ --------------------------------------------------\r\n\/\/ Global Versatile Controler http:\/\/www.gvc-on.net\/\r\n\/\/ --------------------------------------------------\r\n\/\/ --------------------------------------------------\r\n\/\/ Revision Memo (Y.M.D Editor\/Memo)\r\n\/\/ --------------------------------------------------\r\n\/\/ \r\n\/\/ 2013.06.12 \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u90e8\u5206\u306e\u5b9f\u88c5(\u79fb\u690d)\u3092\u3059\u308b\r\n\/\/ \r\n\/\/ 2013.06.10 T.Kabu\r\n\/\/ \u6c4e\u7528\u5236\u5fa1\u88c5\u7f6e Grobal Versatile Controller Daemon (gvcd)\r\n\/\/ \r\n\/\/ gvcd \/dev\/????? (GVC\u304c\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308b\u30c7\u30d0\u30a4\u30b9\u540d)\r\n\/\/ \r\n\/\/ \u30c7\u30d0\u30a4\u30b9\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306f9600N81\r\n\/\/   9600bps\r\n\/\/   \u30ce\u30f3\u30d1\u30ea\u30c6\u30a3\r\n\/\/   8\u30d3\u30c3\u30c8\r\n\/\/   \u30b9\u30c8\u30c3\u30d7\u30d3\u30c3\u30c81\r\n\/\/   \u30d5\u30ed\u30fc\u5236\u5fa1\u306fArduino\u3067\u306f\u3057\u3066\u3044\u306a\u3044\u306e\u3067OFF\r\n\/\/ \r\n\/\/ \u30d1\u30e9\u30e1\u30fc\u30bf\u306fsetserial\u306a\u3069\u306e\u5916\u90e8\u30b3\u30de\u30f3\u30c9\u3067\u8a2d\u5b9a\u3059\u308c\u3070\u3044\u3044\u3068\u304a\u3082\u3046\r\n\/\/ \r\n\/\/ sync;gcc -O2 -Wall -lm .\/gvcd.c -o gvcd\r\n\/\/ \r\n\/\/ Fedora18 \u3067\u306f\u3001gcc -O2 -Wall -fno-strict-aliasing .\/gvcd_20130625.c -o gvcd\u3001\u3068\u3057\u3066\r\n\/\/ \u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u306a\u3044\u3068\u3001dereferencing type-punned pointer(\u578b\u307e\u305f\u304e\u3059\u304e\u307f\u305f\u3044\u306a)\u611f\u3058\u3067\u6012\u3089\u308c\u308b\u3002\r\n\/\/ \r\n\/\/ \u53c2\u8003URL\u3044\u308d\u3044\u308d\r\n\/\/ http:\/\/pinka99.ddo.jp\/nanao\/work\/daemon.html\r\n\/\/ http:\/\/d.hatena.ne.jp\/rero\/20041002\/p1\r\n\/\/ http:\/\/linuxmag.sourceforge.jp\/Japanese\/March2003\/article287.shtml\r\n\/\/ http:\/\/www.geocities.co.jp\/Athlete-Samos\/7760\/study\/msgkyu1.html\r\n\/\/ http:\/\/www.geocities.jp\/taka_owl2005\/job\/UNIX\/kernel\/ipc.html\r\n\/\/ http:\/\/d.hatena.ne.jp\/ka2yan\/20090327\r\n\/\/\r\n\/\/ ------------------------------\r\n\/\/ BASE\r\n\/\/ ------------------------------\r\n\/\/ 2011.11.02 T.Kabu gvcd\t\t\t\t\u3068\u308a\u3042\u3048\u305a\u53d6\u308a\u639b\u304b\u308b\r\n\/\/ 2011.12.01 T.Kabu gvcd2c\t\t\t\t\u5e7e\u3064\u304b\u306e\u30bb\u30f3\u30b5\u30fc\u306b\u5bfe\u5fdc\u3057\u3066\u753b\u9762\u306b\u5410\u304d\u51fa\u3059\u3088\u3046\u306b\u3057\u305f\r\n\/\/ 2011.12.20 T.Kabu gvcd3\t\t\t\t\u30c7\u30fc\u30e2\u30f3\u5316\u3001\u30d7\u30ed\u30bb\u30b9\u30c1\u30a7\u30c3\u30af\u3001\u30ed\u30b0\u5410\u304d\u51fa\u3057\u306b\u53d6\u308a\u639b\u304b\u308b\r\n\/\/ 2012.02.02 T.Kabu gvcd3b\t\t\t\t\u30c6\u30b9\u30c8\u30bd\u30fc\u30b9\u304b\u3089\u3042\u308c\u3053\u308c\u30de\u30fc\u30b8\u3001\u30d7\u30ed\u30bb\u30b9\u9593\u901a\u4fe1(\u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc)\u5bfe\u5fdc\r\n\/\/ 2012.02.06 T.Kabu gvcd3c\t\t\t\tGVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\/\/ 2012.03.09 T.Kabu gvcd4\t\t\t\t\u30b9\u30bf\u30fc\u30c8\u30d5\u30ec\u30fc\u30e0\u3068\u8a00\u3046\u5b9a\u7fa9\u3092\u3084\u3081\u3066\u3001\u30c7\u30ea\u30df\u30bf\u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u3057\u305f\r\n\/\/ 2013.06.10 T.Kabu gvcd_20130610\t\tRev.2\u7528\u306b\u8272\u3005\u4fee\u6b63\r\n\/\/ 2013.07.18 T.Kabu gvcd_20130717\t\t\u8d64\u5916\u7dda\u30c7\u30fc\u30bf(\u3064\u307e\u308a\u30ea\u30e2\u30b3\u30f3)\u306e\u9001\u53d7\u4fe1\u4fdd\u5b58\u518d\u9001\u304c\u51fa\u6765\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u306e\u3067\u3044\u3063\u305f\u3093Fix\r\n\/\/ 2013.12.20 T.Kabu \t\t\t\t\t\u6e05\u66f8\u3068\u3001\u8d64\u5916\u7dda\u30c7\u30fc\u30bf\u306e\u30b5\u30a4\u30ba\u306e\u95a2\u4fc2\u3067\u6271\u3048\u308b\u30c7\u30fc\u30bf\u30b5\u30a4\u30ba\u3092\u30d8\u30c3\u30c0\u8fbc\u307f\u3067\u6700\u59271600\u30d0\u30a4\u30c8\u306b\u7d71\u4e00\u3059\u308b\r\n\r\n\/\/---------------------------------------------------\r\n\/\/ include\r\n\/\/---------------------------------------------------\r\n#include &lt;stdio.h&gt;\r\n#include &lt;fcntl.h&gt;\r\n#include &lt;string.h&gt;\r\n#include &lt;unistd.h&gt;\r\n#include &lt;stdlib.h&gt;\r\n#include &lt;signal.h&gt;\r\n#include &lt;syslog.h&gt;\r\n#include &lt;termios.h&gt;\r\n#include &lt;time.h&gt;\r\n#include &lt;sys\/types.h&gt;\r\n#include &lt;sys\/stat.h&gt;\r\n#include &lt;sys\/time.h&gt;\r\n#include &lt;sys\/ipc.h&gt;\r\n#include &lt;sys\/msg.h&gt;\r\n\/\/\/#include &lt;linux\/ipc.h&gt;\r\n\/\/\/#include &lt;linux\/msg.h&gt;\r\n#include &lt;errno.h&gt;\r\n\r\n#include &quot;gvcd.h&quot;\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Const Define\r\n\/\/ --------------------------------------------------\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Structure \r\n\/\/ --------------------------------------------------\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Prototype Define\r\n\/\/ --------------------------------------------------\r\n\/\/ ------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406 (main\u95a2\u6570\u306e\u4e2d\u3067\u306e\u30ad\u30e5\u30fc\u51e6\u7406\u30c6\u30fc\u30d6\u30eb\u521d\u671f\u5316\u3092\u5fd8\u308c\u305a\u306b)\r\n\/\/ ------------------------------\r\nint gvc_q_job_dummy(void * q_po);\t\t\t\t\/\/ \u30ad\u30e5\u30fc\u30c0\u30df\u30fc\u51e6\u7406\r\n\r\nint gvc_q_job_version(void * q_po);\t\t\t\t\/\/ 0x01:\u30d0\u30fc\u30b8\u30e7\u30f3\u8981\u6c42\r\nint gvc_q_job_modulelist(void * q_po);\t\t\t\/\/ 0x02:\u30e2\u30b8\u30e5\u30fc\u30eb\u4e00\u89a7\u8981\u6c42\r\nint gvc_q_job_moduledata(void * q_po);\t\t\t\/\/ 0x03:\u30e2\u30b8\u30e5\u30fc\u30eb\u30c7\u30fc\u30bf\u8981\u6c42\r\nint gvc_q_job_switchoff(void * q_po);\t\t\t\/\/ 0x20:\u30b9\u30a4\u30c3\u30c1OFF\u8981\u6c42\r\nint gvc_q_job_switchon(void * q_po);\t\t\t\/\/ 0x21:\u30b9\u30a4\u30c3\u30c1ON\u8981\u6c42\r\nint gvc_q_job_switchstatus(void * q_po);\t\t\/\/ 0x2f:\u30b9\u30a4\u30c3\u30c1\u72b6\u614b\u8981\u6c42\r\nint gvc_q_job_masterreset(void * q_po);\t\t\t\/\/ 0x7e:\u30de\u30b9\u30bf\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30ea\u30bb\u30c3\u30c8\u8981\u6c42\r\nint gvc_q_job_masterrestart(void * q_po);\t\t\/\/ 0x7e:\u30de\u30b9\u30bf\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30ea\u30b9\u30bf\u30fc\u30c8\u8981\u6c42\r\nint gvc_q_job_masterstop(void * q_po);\t\t\t\/\/ 0x7f:\u30de\u30b9\u30bf\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30b9\u30c8\u30c3\u30d7\u8981\u6c42\r\n\/\/\/int gvc_q_job_lcdoutput(void * q_po);\t\t\/\/ 0x81:LCD\u30c7\u30fc\u30bf\u51fa\u529b\u8981\u6c42\r\nint gvc_q_job_irtx(void * q_po);\t\t\t\t\/\/ 0x91:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u9001\u4fe1\u8981\u6c42\r\nint gvc_q_job_irrx(void * q_po);\t\t\t\t\/\/ 0x92:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u53d7\u4fe1\u8981\u6c42\r\nint gvc_q_job_irset(void * q_po);\t\t\t\t\/\/ 0x93:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u8a2d\u5b9a\u8981\u6c42\r\nint gvc_q_job_irget(void * q_po);\t\t\t\t\/\/ 0x94:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u53d6\u5f97\u8981\u6c42\r\nint gvc_q_job_irdel(void * q_po);\t\t\t\t\/\/ 0x95:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u524a\u9664\u8981\u6c42\r\n\/\/\/int gvc_q_job_voiceoutput(void * q_po);\t\t\/\/ 0xa1:\u97f3\u58f0\u5408\u6210\u30c7\u30fc\u30bf\u51fa\u529b\u8981\u6c42\r\nint gvc_q_job_daemonstop(void * q_po);\t\t\t\/\/ 0xff:gvcd\u30b9\u30c8\u30c3\u30d7\u8981\u6c42\r\n\r\n\/\/ ------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406 (main\u95a2\u6570\u306e\u4e2d\u3067\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\u30c6\u30fc\u30d6\u30eb\u521d\u671f\u5316\u3092\u5fd8\u308c\u305a\u306b)\r\n\/\/ ------------------------------\r\nint gvc_msg_job_dummy(void * msg_po);           \/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30c0\u30df\u30fc\u51e6\u7406\r\nint gvc_msg_job_delimiterframe(void * msg_po);  \/\/ \u30c7\u30ea\u30df\u30bf\u30e1\u30c3\u30bb\u30fc\u30b8\r\n\r\n\/\/int gvc_msg_job_a(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_b(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_c(void * msg_po);\t\t\t\t\/\/ TBD\r\nint gvc_msg_job_distance(void * msg_po);\t\t\/\/ \u8ddd\u96e2\r\n\/\/int gvc_msg_job_e(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_f(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_g(void * msg_po);\t\t\t\t\/\/ TBD\r\nint gvc_msg_job_humidity(void * msg_po);\t\t\/\/ \u6e7f\u5ea6\r\nint gvc_msg_job_ir(void * msg_po);\t\t\t\t\/\/ \u8d64\u5916\u7dda\r\n\/\/int gvc_msg_job_j(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_k(void * msg_po);\t\t\t\t\/\/ TBD\r\nint gvc_msg_job_light(void * msg_po);\t\t\t\/\/ \u7167\u5ea6\r\n\/\/int gvc_msg_job_m(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_n(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_o(void * msg_po);\t\t\t\t\/\/ TBD\r\nint gvc_msg_job_pressure(void * msg_po);\t\t\/\/ \u5927\u6c17\u5727\r\n\/\/int gvc_msg_job_q(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_r(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_s(void * msg_po);\t\t\t\t\/\/ TBD\r\nint gvc_msg_job_temperature(void * msg_po);\t\t\/\/ \u6c17\u6e29\r\n\/\/int gvc_msg_job_u(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_v(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_w(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_x(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_y(void * msg_po);\t\t\t\t\/\/ TBD\r\n\/\/int gvc_msg_job_z(void * msg_po);\t\t\t\t\/\/ TBD\r\nint gvc_msg_job_other(void * msg_po);\t\t\t\/\/ \u305d\u306e\u4ed6\r\n\r\n\r\nvoid signal_alarm();                            \/\/ ALARM\u30b7\u30b0\u30ca\u30eb\u51e6\u7406\r\nvoid signal_sighup();                           \/\/ SIGHUP\u30b7\u30b0\u30ca\u30eb\u51e6\u7406\r\n\r\nvoid put_log(int, char * logstr);               \/\/ \u30ed\u30b0\u51fa\u529b\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Variable Param\r\n\/\/ --------------------------------------------------\r\nchar daytime_str&#x5B;DAYTIME_LEN];\t\t\t\t\t\/\/ \u65e5\u6642\u6587\u5b57\u5217 2011\/10\/14 12:43:58\r\n\r\nint gvc_port;\t\t\t\t\t\t\t\t\t\/\/ GVC\u3092\u63a5\u7d9a\u3057\u3066\u3044\u308b\u30dd\u30fc\u30c8(\/dev\/ttyUSB0\u3068\u304b)\r\n\r\nint gvcd_mode = 0;\t\t\t\t\t\t\t\t\/\/ GVCD\u52d5\u4f5c\u30e2\u30fc\u30c9 0:\u901a\u5e38\u30e2\u30fc\u30c9 1:\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u30e2\u30fc\u30c9 99:\u30c0\u30f3\u30d7\u30e2\u30fc\u30c9\r\n\r\nint gvc_log_fp;\t\t\t\t\t\t\t\t\t\/\/ GVC\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u30dd\u30a4\u30f3\u30bf\r\n\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406\u30c6\u30fc\u30d6\u30eb(\u623b\u308a\u5024:int\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u305d\u306e\u3082\u306e\u306f(void *)\u306b\u578b\u30ad\u30e3\u30b9\u30c8\u3057\u3066\u6e21\u3059(\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4e2d\u8eab\u306f\u305d\u308c\u305e\u308c\u7570\u306a\u308b\u305f\u3081)\r\nint (*gvc_queue_job&#x5B;0x100])(void * q_po);\r\n\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\u30c6\u30fc\u30d6\u30eb(\u623b\u308a\u5024:int\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u305d\u306e\u3082\u306e\u306f(void *)\u306b\u578b\u30ad\u30e3\u30b9\u30c8\u3057\u3066\u6e21\u3059(\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4e2d\u8eab\u306f\u305d\u308c\u305e\u308c\u7570\u306a\u308b\u305f\u3081)\r\nint (*gvc_msg_job&#x5B;0x100])(void * msg_po);\r\n\r\n\/\/ \u30c7\u30ea\u30df\u30bf\u30e1\u30c3\u30bb\u30fc\u30b8\r\nstatic char GVC_DELIMITER_MSG&#x5B;] = {\r\n\t0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,\r\n\t0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xaa\r\n};\r\n\r\n\/\/ \u30b3\u30de\u30f3\u30c9\u9001\u4fe1\u53ef\u80fd\u72b6\u614b(0:\u30c7\u30ea\u30df\u30bf\u5f85\u3061\u30011:\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\u53ef\u80fd)\r\nint gvc_cmd_ready = 0;\r\n\r\n\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\r\nunsigned char rx_buffer&#x5B;BUFF_SIZE];\r\n\r\n\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\r\nunsigned char tx_buffer&#x5B;BUFF_SIZE];\r\n\r\n\/\/ \u8d64\u5916\u7dda\u30c7\u30fc\u30bf\u683c\u7d0d\u7528\u30d5\u30a1\u30a4\u30eb\r\nFILE *datafp;\t\t\t\t\t\t\t\t\t\/\/ \u30c7\u30fc\u30bf\u683c\u7d0d\u7528\u30d5\u30a1\u30a4\u30eb\u30dd\u30a4\u30f3\u30bf\r\nchar datafp_flag;\t\t\t\t\t\t\t\t\/\/ \u30c7\u30fc\u30bf\u683c\u7d0d\u30d5\u30e9\u30b0(0:None, 1:Wait, 2:Complete, etc)\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Sub Routine\r\n\/\/ --------------------------------------------------\r\n\/\/ ------------------------------------------\r\n\/\/ Sub Routine\/GVC\u30ad\u30e5\u30fc\u51e6\u7406\r\n\/\/ ------------------------------------------\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:\u30c0\u30df\u30fc\r\n\/\/ --------------------------------\r\nint gvc_q_job_dummy(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;QUEUE DUMMY : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\tgvc_message_queue-&gt;qtype,\r\n\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\tgvc_message_queue-&gt;q.format,\r\n\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x01:\u30d0\u30fc\u30b8\u30e7\u30f3\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_version(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\/\/\/\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u3001\u3068\u3044\u3046\u304bLinux\u30ec\u30d9\u30eb\u306b\u306a\u308b\u3068\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u4f53\u306e\u30a2\u30e9\u30a4\u30f3\u30e1\u30f3\u30c8\u304c\u884c\u308f\u308c\u308b\u304b\u3089\u6ce8\u610f\u3059\u308b\u3053\u3068!!\r\n\/\/\/\tmemcpy(tx_buffer, (void *)&amp;(gvc_message_queue-&gt;q.msg_type), GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\/\/\/\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)tx_buffer;\r\n\t\/\/ \u2191\u3068\u304b\u306f\u3067\u304d\u306a\u3044!! \u30fd(\uff40\u0414\u00b4#)\uff89 \uff91\uff77\uff70!!\r\n\t\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\/\/\/\tgvc_serial_message-&gt;data&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_serial_message-&gt;data_len ] = GetCRC8((void *)gvc_serial_message, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_serial_message-&gt;data_len);\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT or LONG!? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE VERSION : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30d0\u30a4\u30c8\u6570\u3092\u8fd4\u3059\r\n\treturn tx_len;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x02:\u30e2\u30b8\u30e5\u30fc\u30eb\u4e00\u89a7\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_modulelist(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE MODULE LIST : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x03:\u30e2\u30b8\u30e5\u30fc\u30eb\u30c7\u30fc\u30bf\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_moduledata(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;QUEUE MODULE DATA : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\tgvc_message_queue-&gt;qtype,\r\n\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\tgvc_message_queue-&gt;q.format,\r\n\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x20:\u30b9\u30a4\u30c3\u30c1OFF\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_switchoff(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE SWITCH OFF : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x21:\u30b9\u30a4\u30c3\u30c1ON\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_switchon(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE SWITCH ON : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x2f:\u30b9\u30a4\u30c3\u30c1\u72b6\u614b\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_switchstatus(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;QUEUE SWITCH STATUS : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\tgvc_message_queue-&gt;qtype,\r\n\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\tgvc_message_queue-&gt;q.format,\r\n\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x91:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u9001\u4fe1\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_irtx(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE IR TX : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x92:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u53d7\u4fe1\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_irrx(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE IR RX : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x93:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u8a2d\u5b9a\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_irset(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\tint hex_count;\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE IR SET : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ QUEUE\uff5edata=\u307e\u3067\u306e\u6587\u5b57\u5217\u306e\u9577\u3055\u3092\u53d6\u5f97\r\n\t\ttx_len = strlen(logstr);\r\n\t\t\/\/ data=\u306e\u5f8c\u308d\u306b16\u9032\u3067\u30c7\u30fc\u30bf\u3092\u66f8\u3044\u3066\u3044\u304f\r\n\t\tfor (hex_count = 0; hex_count &lt; gvc_message_queue-&gt;q.data_len; hex_count++)\r\n\t\t{\r\n\t\t\tsprintf((char *)logstr + tx_len, &quot;%02X&quot;, (int)gvc_message_queue-&gt;q.data&#x5B;hex_count]);\r\n\t\t\ttx_len += 2;\r\n\t\t}\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x94:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u53d6\u5f97\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_irget(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u9577\u304c\u3042\u308b\u5834\u5408\u3001\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u306e\u3067\u3001\u307e\u305a\u958b\u3044\u3066\u307f\u308b\r\n\tif (gvc_message_queue-&gt;q.data_len &gt; 0 &amp;&amp; gvc_message_queue-&gt;q.data_len == strlen((char *)gvc_message_queue-&gt;q.data))\r\n\t{\r\n\t\t\/\/ \u305d\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u958b\u3051\u308b\u304b\u8a66\u3057\u3066\u307f\u308b\r\n\t\tdatafp = fopen((char *)gvc_message_queue-&gt;q.data, &quot;wb&quot;);\r\n\t\t\/\/ \u30d5\u30a1\u30a4\u30eb\u304c\u958b\u3051\u306a\u304b\u3063\u305f\u3089\r\n\t\tif (datafp == NULL)\r\n\t\t{\r\n\t\t\t\/\/ \u30c7\u30fc\u30bf\u683c\u7d0d\u30d5\u30e9\u30b0\u521d\u671f\u5316\r\n\t\t\tdatafp_flag = 0;\r\n\t\t\t\/\/ \u30c7\u30fc\u30bf\u683c\u7d0d\u30d5\u30e9\u30b0\u306f\u5909\u5316\u306a\u3057\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;CANNOT OPEN IR DATA FILE: %s&quot;, gvc_message_queue-&gt;q.data);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ \u30c7\u30fc\u30bf\u683c\u7d0d\u30d5\u30e9\u30b0\u3092\u5f85\u3061\u72b6\u614b\u306b\r\n\t\t\tdatafp_flag = 1;\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;OPEN IR DATA FILE: %s&quot;, gvc_message_queue-&gt;q.data);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u30c7\u30fc\u30bf\u9577\u30ea\u30bb\u30c3\u30c8\u3001GVC\u306b\u5bfe\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u9001\u3063\u3066\u3082\u610f\u5473\u304c\u7121\u3044\u306e\u3067\u3002\r\n\t\t\/\/ \u3053\u306eif{}\u306e\u5916\u3067\u30ea\u30bb\u30c3\u30c8\u3057\u306a\u3044\u306e\u306f\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u305d\u306e\u3082\u306e\u304c\u304a\u304b\u3057\u304b\u3063\u305f\u3068\u304d\u306b\u6c17\u304c\u3064\u304b\u306a\u3044\u3068\u56f0\u308b\u304b\u3089\r\n\t\tgvc_message_queue-&gt;q.data_len = 0;\r\n\t}\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE IR GET : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x95:\u30ea\u30e2\u30b3\u30f3\u30c7\u30fc\u30bf\u524a\u9664\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_irdel(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE IR DEL : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x7e:\u30de\u30b9\u30bf\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30ea\u30bb\u30c3\u30c8\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_masterreset(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE MASTER RESET : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x7e:\u30de\u30b9\u30bf\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30ea\u30b9\u30bf\u30fc\u30c8\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_masterrestart(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE MASTER RESTART : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0x7f:\u30de\u30b9\u30bf\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30b9\u30c8\u30c3\u30d7\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_masterstop(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\/\/ ----------------\r\n\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u30b3\u30d4\u30fc\r\n\ttx_buffer&#x5B;0] = gvc_message_queue-&gt;q.msg_type;\t\t\t\/\/ gvc_serial_message-&gt;msg_type\r\n\ttx_buffer&#x5B;1] = gvc_message_queue-&gt;q.dev_num;\t\t\t\/\/ gvc_serial_message-&gt;dev_num\r\n\ttx_buffer&#x5B;2] = gvc_message_queue-&gt;q.format;\t\t\t\t\/\/ gvc_serial_message-&gt;format\r\n\ttx_buffer&#x5B;3] = gvc_message_queue-&gt;q.cmd;\t\t\t\t\/\/ gvc_serial_message-&gt;cmd\r\n\t*(int *)&amp;(tx_buffer&#x5B;4]) = gvc_message_queue-&gt;q.data_len; \/\/ gvc_serial_message-&gt;data_len\r\n\tmemcpy((void *)&amp;(tx_buffer&#x5B;6]), gvc_message_queue-&gt;q.data, GVC_SERIAL_MESSAGE_HEADER_SIZE +  gvc_message_queue-&gt;q.data_len);\r\n\t\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\ttx_buffer&#x5B; GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len ] = GetCRC8((void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\t\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3078\u306e\u30e9\u30a4\u30c8(checksum\u307e\u3067\u9001\u4fe1\u3059\u308b\u306e\u3067\u9577\u3055\u306f+1\u3055\u308c\u308b)\r\n\ttx_len = write(gvc_port, (void *)tx_buffer, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1);\r\n\t\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u306a\u3089\r\n\tif (tx_len &lt; 0)\r\n\t{\r\n\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\tif (errno == EINTR)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is EINTR. tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;WRITE is OTHER ERROR !? tx_len=%d, errno=%d&quot;, tx_len, errno);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t}\r\n\t\/\/ \u9001\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u9577\u304c\u5b9f\u969b\u3068\u5408\u81f4\u3057\u306a\u3044\u306a\u3089\r\n\telse if (tx_len != (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1))\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;WRITE is SHORT !? tx_len=%d, org_len=%d&quot;, tx_len, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_message_queue-&gt;q.data_len + 1));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u304d\u3061\u3093\u3068\u9001\u4fe1\u3067\u304d\u305f\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;QUEUE MASTER STOP : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t\tgvc_message_queue-&gt;qtype,\r\n\t\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\t\tgvc_message_queue-&gt;q.format,\r\n\t\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t\t);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406:0xff:gvcd\u30b9\u30c8\u30c3\u30d7\u8981\u6c42\r\n\/\/ --------------------------------\r\nint gvc_q_job_daemonstop(void * q_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_MESSAGE_QUEUE_t * gvc_message_queue;\t\t\t\/\/ GVC \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u7528\u30dd\u30a4\u30f3\u30bf(\u30ad\u30e5\u30fc\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30ad\u30e5\u30fc\u30dd\u30a4\u30f3\u30bf\u306bGVC_MESSAGE_QUEUE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_message_queue = (GVC_MESSAGE_QUEUE_t *)q_po;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;QUEUE DAEMON STOP : qtype=%lu, gvc_num=%d, msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\tgvc_message_queue-&gt;qtype,\r\n\t\tgvc_message_queue-&gt;q.gvc_num,\r\n\t\tgvc_message_queue-&gt;q.msg_type,\r\n\t\tgvc_message_queue-&gt;q.dev_num,\r\n\t\tgvc_message_queue-&gt;q.format,\r\n\t\tgvc_message_queue-&gt;q.cmd,\r\n\t\tgvc_message_queue-&gt;q.data_len\r\n\t\t);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ GVC\u306b\u5bfe\u3057\u3066\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ ------------------------------------------\r\n\/\/ Sub Routine\/GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\r\n\/\/ ------------------------------------------\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u30c0\u30df\u30fc\r\n\/\/ --------------------------------\r\nint gvc_msg_job_dummy(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG DUMMY : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len\r\n\t\t );\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u30c7\u30ea\u30df\u30bf\u30e1\u30c3\u30bb\u30fc\u30b8\r\n\/\/ --------------------------------\r\nint gvc_msg_job_delimiterframe(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG DELIMITER : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=0x%02x&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len\r\n\t\t );\r\n\/\/ \u666e\u6bb5\u306f\u3046\u3056\u3044\u306e\u3067\u52d5\u304b\u3055\u306a\u3044\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ GVC\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\u53ef\u80fd\u72b6\u614b\u3092\u9001\u4fe1\u53ef\u80fd(=1)\u306b\u8a2d\u5b9a\r\n\tgvc_cmd_ready = 1;\r\n\t \r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u305d\u306e\u4ed6\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\r\n\/\/ --------------------------------\r\nint gvc_msg_job_other(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tint  loglen;\r\n\t\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u30d0\u30a4\u30ca\u30ea\u306e\u5834\u5408(format\u306a\u3069\u3067\u5224\u5225\u3059\u308b\u3053\u3068)\u306b\u306f\u3001HEX\u8868\u793a\u306b\u3057\u305f\u308a\u300c.\u300d\u8868\u793a\u306b\u3057\u305f\u308a\u306a\u3069\u5de5\u592b\u3059\u308b\u3053\u3068!!\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u3042\u308b\u306a\u3089\r\n\tif (gvc_serial_message-&gt;data_len &gt; 0)\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;MSG OTHER : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t\t gvc_serial_message-&gt;format,\r\n\t\t\t gvc_serial_message-&gt;cmd,\r\n\t\t\t gvc_serial_message-&gt;data_len);\r\n\t\tloglen = strlen(logstr);\r\n\t\tmemcpy(logstr + loglen, gvc_serial_message-&gt;data, gvc_serial_message-&gt;data_len);\r\n\t\tlogstr&#x5B;loglen + gvc_serial_message-&gt;data_len] = 0x00;\r\n\t}\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u306a\u3044\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\t\tsprintf(logstr, &quot;MSG OTHER : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d&quot;,\r\n\t\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t\t gvc_serial_message-&gt;format,\r\n\t\t\t gvc_serial_message-&gt;cmd,\r\n\t\t\t gvc_serial_message-&gt;data_len\r\n\t\t\t );\r\n\t}\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u8ddd\u96e2\r\n\/\/ --------------------------------\r\nint gvc_msg_job_distance(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tint  loglen;\r\n\t\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u30d0\u30a4\u30ca\u30ea\u306e\u5834\u5408(format\u306a\u3069\u3067\u5224\u5225\u3059\u308b\u3053\u3068)\u306b\u306f\u3001HEX\u8868\u793a\u306b\u3057\u305f\u308a\u300c.\u300d\u8868\u793a\u306b\u3057\u305f\u308a\u306a\u3069\u5de5\u592b\u3059\u308b\u3053\u3068!!\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG DIST : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len);\r\n\tloglen = strlen(logstr);\r\n\tmemcpy(logstr + loglen, gvc_serial_message-&gt;data, gvc_serial_message-&gt;data_len);\r\n\tlogstr&#x5B;loglen + gvc_serial_message-&gt;data_len] = 0x00;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u6e7f\u5ea6\r\n\/\/ --------------------------------\r\nint gvc_msg_job_humidity(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tint  loglen;\r\n\t\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u30d0\u30a4\u30ca\u30ea\u306e\u5834\u5408(format\u306a\u3069\u3067\u5224\u5225\u3059\u308b\u3053\u3068)\u306b\u306f\u3001HEX\u8868\u793a\u306b\u3057\u305f\u308a\u300c.\u300d\u8868\u793a\u306b\u3057\u305f\u308a\u306a\u3069\u5de5\u592b\u3059\u308b\u3053\u3068!!\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG HUMI : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len);\r\n\tloglen = strlen(logstr);\r\n\tmemcpy(logstr + loglen, gvc_serial_message-&gt;data, gvc_serial_message-&gt;data_len);\r\n\tlogstr&#x5B;loglen + gvc_serial_message-&gt;data_len] = 0x00;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u8d64\u5916\u7dda\r\n\/\/ --------------------------------\r\nint gvc_msg_job_ir(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tint  loglen;\r\n\tint  hex_count;\r\n\t\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG IR : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len);\r\n\tloglen = strlen(logstr);\r\n\t\r\n\t\/\/ \u3082\u3057\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u304c\u30d0\u30a4\u30ca\u30ea\u306a\u3089\r\n\tif (gvc_serial_message-&gt;format == 0x31)\r\n\t{\r\n\t\t\/\/ \u5f53\u9762\u306fASCII\u306b\u5909\u63db\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u51fa\u529b\u2026TBD\r\n\t\tfor (hex_count = 0; hex_count &lt; gvc_serial_message-&gt;data_len; hex_count++)\r\n\t\t{\r\n\t\t\tsprintf((char *)logstr + loglen, &quot;%02X&quot;, (int)gvc_serial_message-&gt;data&#x5B;hex_count]);\r\n\t\t\tloglen += 2;\r\n\t\t}\r\n\t}\r\n\t\/\/ \u305d\u3046\u3067\u306f\u306a\u3044\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u5f53\u9762\u306f\u305d\u306e\u307e\u307e\u30c6\u30ad\u30b9\u30c8\u51fa\u529b\u2026TBD\r\n\t\tmemcpy(logstr + loglen, gvc_serial_message-&gt;data, gvc_serial_message-&gt;data_len);\r\n\t\tlogstr&#x5B;loglen + gvc_serial_message-&gt;data_len] = 0x00;\r\n\t}\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ \u3082\u3057\u30c7\u30fc\u30bf\u683c\u7d0d\u30d5\u30e9\u30b0\u304c\u5f85\u3061\u72b6\u614b(=1)\u3067\u3001\u304b\u3064\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u304c\u30aa\u30fc\u30d7\u30f3\u3055\u308c\u3066\u3044\u308b\u306a\u3089\r\n\tif (datafp_flag == 1 &amp;&amp; datafp != NULL)\r\n\t{\r\n\t\t\/\/ \u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u306b\u30c7\u30fc\u30bf\u3092\u51fa\u529b\r\n\t\tfwrite(gvc_serial_message-&gt;data, sizeof(char), gvc_serial_message-&gt;data_len, datafp);\r\n\t\t\/\/ \u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092\u9589\u3058\u308b\r\n\t\tfclose(datafp);\r\n\t\t\/\/ \u30c7\u30fc\u30bf\u683c\u7d0d\u30d5\u30e9\u30b0\u521d\u671f\u5316\r\n\t\tdatafp_flag = 0;\r\n\t}\r\n\t\/\/ \u51fa\u529b\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u78ba\u8a8d\u3059\u308b\u306b\u306f\u300cod -tx1z \u51fa\u529b\u30d5\u30a1\u30a4\u30eb\u540d\u300d\u306e\u3088\u3046\u306b\u3059\u308b\u3068\u3044\u3044\u3088\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u7167\u5ea6\r\n\/\/ --------------------------------\r\nint gvc_msg_job_light(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tint  loglen;\r\n\t\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u30d0\u30a4\u30ca\u30ea\u306e\u5834\u5408(format\u306a\u3069\u3067\u5224\u5225\u3059\u308b\u3053\u3068)\u306b\u306f\u3001HEX\u8868\u793a\u306b\u3057\u305f\u308a\u300c.\u300d\u8868\u793a\u306b\u3057\u305f\u308a\u306a\u3069\u5de5\u592b\u3059\u308b\u3053\u3068!!\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG LIGHT : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len);\r\n\tloglen = strlen(logstr);\r\n\tmemcpy(logstr + loglen, gvc_serial_message-&gt;data, gvc_serial_message-&gt;data_len);\r\n\tlogstr&#x5B;loglen + gvc_serial_message-&gt;data_len] = 0x00;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u5927\u6c17\u5727\u3001\u5727\u529b\r\n\/\/ --------------------------------\r\nint gvc_msg_job_pressure(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tint  loglen;\r\n\t\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u30d0\u30a4\u30ca\u30ea\u306e\u5834\u5408(format\u306a\u3069\u3067\u5224\u5225\u3059\u308b\u3053\u3068)\u306b\u306f\u3001HEX\u8868\u793a\u306b\u3057\u305f\u308a\u300c.\u300d\u8868\u793a\u306b\u3057\u305f\u308a\u306a\u3069\u5de5\u592b\u3059\u308b\u3053\u3068!!\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG PRES : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len);\r\n\tloglen = strlen(logstr);\r\n\tmemcpy(logstr + loglen, gvc_serial_message-&gt;data, gvc_serial_message-&gt;data_len);\r\n\tlogstr&#x5B;loglen + gvc_serial_message-&gt;data_len] = 0x00;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406:\u6e29\u5ea6\r\n\/\/ --------------------------------\r\nint gvc_msg_job_temperature(void * msg_po)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\tint  loglen;\r\n\t\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)msg_po;\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u304c\u30d0\u30a4\u30ca\u30ea\u306e\u5834\u5408(format\u306a\u3069\u3067\u5224\u5225\u3059\u308b\u3053\u3068)\u306b\u306f\u3001HEX\u8868\u793a\u306b\u3057\u305f\u308a\u300c.\u300d\u8868\u793a\u306b\u3057\u305f\u308a\u306a\u3069\u5de5\u592b\u3059\u308b\u3053\u3068!!\r\n\t\r\n\t\/\/ \u30ed\u30b0\u51fa\u529b\u7528\u6587\u5b57\u5217\u3092\u751f\u6210\r\n\tsprintf(logstr, &quot;MSG TEMP : msg_type=0x%02x, dev_num=0x%02x, format=0x%02x, cmd\/result=0x%02x, data_len=%0d, data=&quot;,\r\n\t\t gvc_serial_message-&gt;msg_type,\r\n\t\t gvc_serial_message-&gt;dev_num,\r\n\t\t gvc_serial_message-&gt;format,\r\n\t\t gvc_serial_message-&gt;cmd,\r\n\t\t gvc_serial_message-&gt;data_len);\r\n\tloglen = strlen(logstr);\r\n\tmemcpy(logstr + loglen, gvc_serial_message-&gt;data, gvc_serial_message-&gt;data_len);\r\n\tlogstr&#x5B;loglen + gvc_serial_message-&gt;data_len] = 0x00;\r\n\t\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\treturn 0;\r\n}\r\n\r\n\/\/ ------------------------------------------\r\n\/\/ Sub Routine\/\u305d\u306e\u4ed6\r\n\/\/ ------------------------------------------\r\n\/\/ --------------------------------\r\n\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u306e\u521d\u671f\u5316\r\n\/\/ --------------------------------\r\nvoid serial_reset(int fd)\r\n{\r\n\t\/\/ http:\/\/linuxjm.sourceforge.jp\/html\/LDP_man-pages\/man3\/termios.3.html\r\n\t\/\/ \u6a19\u6e96\u3067\u306f\u30ab\u30ce\u30cb\u30ab\u30eb\u30e2\u30fc\u30c9\u3067\u3001\u30c7\u30ea\u30df\u30bf\u3082\u3042\u3089\u304b\u3058\u3081\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\r\n\t\r\n\t\/\/ ThinkPad\u306b\u5165\u308c\u305fLinux\u3068\u304b\u3067\u306f\u306a\u3093\u3089\u554f\u984c\u304c\u7121\u304b\u3063\u305f\u304c\u3001\u306a\u305c\u304bRaspberry Pi\u3067\u306f\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u304c\u3046\u307e\u304f\r\n\t\/\/ \u4f7f\u3048\u305a\u56f0\u3063\u3066\u3044\u305f\u3002Pidora(Fedora Remix)\u306blogserial\u3068\u3044\u3046\u306e\u304c\u3042\u3063\u305f\u306e\u3067\u30bd\u30fc\u30b9\u3092\u898b\u3066\u307f\u305f\u3068\u3053\u308d\u3001\r\n\t\/\/ \u3069\u3046\u3082\u6587\u5b57\u30b5\u30a4\u30ba\u306e\u521d\u671f\u5316\u3067\u300c(tio.c_cflag &amp; ~CSIZE)\u300d\u3092OR\u3068\u3063\u305f\u4e0a\u3067CS8\u3068\u3057\u306a\u3044\u3068\u3060\u3081\u307f\u305f\u3044\u3067\u3001\r\n\t\/\/ \u3061\u306a\u307f\u306b\u4ed6\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3069\u3067\u3042\u3063\u3066\u3082\u95a2\u4fc2\u306a\u304b\u3063\u305f\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\t\/\/ termio\u30c6\u30fc\u30d6\u30eb\u30ed\u30fc\u30ab\u30eb\u5ba3\u8a00\r\n\tstruct termios tio;\r\n\t\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u30920\u3067\u521d\u671f\u5316\r\n\tmemset(&amp;tio, 0, sizeof(tio));\r\n\t\r\n\t\/\/ \u73fe\u5728\u306e\u8a2d\u5b9a\u5024\u3092\u53d6\u5f97\r\n\ttcgetattr(fd, &amp;tio);\r\n\t\r\n\t\/\/ \u5165\u529b\u30dc\u30fc\u30ec\u30fc\u30c8\u3092\u8a2d\u5b9a\r\n\tcfsetispeed(&amp;tio, BAUD_RATE);\r\n\t\/\/ \u51fa\u529b\u30dc\u30fc\u30ec\u30fc\u30c8\u3092\u8a2d\u5b9a\r\n\tcfsetospeed(&amp;tio, BAUD_RATE);\r\n\t\r\n\t\/\/ \u6587\u5b57\u30b5\u30a4\u30ba\u3068\u3057\u30668\u30d3\u30c3\u30c8\u3092\u8a2d\u5b9a\r\n\ttio.c_cflag = (tio.c_cflag &amp; ~CSIZE) | CS8;\r\n\t\/\/ \u30e2\u30c7\u30e0\u306e\u5236\u5fa1\u7dda\u3092\u7121\u8996\u3001\u53d7\u4fe1\u6709\u52b9\u3001\u30d5\u30ec\u30fc\u30e0\u30a8\u30e9\u30fc\u304a\u3088\u3073\u30d1\u30ea\u30c6\u30a3\u30a8\u30e9\u30fc\u3092\u7121\u8996\r\n\ttio.c_cflag |= (CLOCAL | CREAD | IGNPAR );\r\n\t\/\/ \u30ce\u30f3\u30d1\u30ea\u30c6\u30a3(\u5076\u6570\u5947\u6570\u30d1\u30ea\u30c6\u30a3\u3082\u5916\u3059=\u3053\u306e\u72b6\u614b\u3060\u3068\u5947\u6570\u30d1\u30ea\u30c6\u30a3)\r\n\ttio.c_cflag &amp;= ~(PARENB | PARODD);\r\n\t\r\n\t\/\/ \u5165\u529b\u30e2\u30fc\u30c9\u306e\u8a2d\u5b9a\r\n\t\/\/ \u5165\u529b\u4e2d\u306e BREAK \u4fe1\u53f7\u3092\u7121\u8996\r\n\ttio.c_iflag =  IGNBRK;\r\n\t\/\/ \u51fa\u529b\u306e XON\/XOFF \u30d5\u30ed\u30fc\u5236\u5fa1\u3092\u7121\u52b9\u3001\u5165\u529b\u306e XON\/XOFF \u30d5\u30ed\u30fc\u5236\u5fa1\u3092\u7121\u52b9\u3001\u4efb\u610f\u306e\u6587\u5b57\u3092\u5165\u529b\u3059\u308b\u3068\u3001\u505c\u6b62\u3057\u3066\u3044\u305f\u51fa\u529b\u3092\u518d\u958b\u3057\u305f\u308a\u3059\u308b\u6a5f\u80fd\u3082\u7121\u52b9\r\n\ttio.c_iflag &amp;= ~(IXON|IXOFF|IXANY);\r\n\t\r\n\t\/\/ \u51fa\u529b\u30e2\u30fc\u30c9\u306f0\u30af\u30ea\u30a2\r\n\ttio.c_oflag = 0;\r\n\t\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u30e2\u30fc\u30c9\u30820\u30af\u30ea\u30a2(\u975e\u30ab\u30ce\u30cb\u30ab\u30eb\u30e2\u30fc\u30c9\u306b\u306a\u308b)\r\n\ttio.c_lflag = 0;\r\n\t\r\n\t\/\/\/ \u975e\u30ab\u30ce\u30cb\u30ab\u30eb\u30e2\u30fc\u30c9\u306e\u5834\u5408\u306e\u6700\u5c0f\u53d7\u4fe1\u6587\u5b57\u6570\r\n\ttio.c_cc&#x5B;VMIN] = 1;\r\n\t\/\/\/ \u975e\u30ab\u30ce\u30cb\u30ab\u30eb\u30e2\u30fc\u30c9\u306e\u5834\u5408\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u6642\u9593\r\n\ttio.c_cc&#x5B;VTIME] = 5;\r\n\t\r\n\t\/\/ \u7aef\u672b\u306b\u95a2\u9023\u3057\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8a2d\u5b9a(TCSANOW:\u3059\u3050\u306b\u53cd\u6620)\r\n\ttcsetattr(fd, TCSANOW, &amp;tio);\r\n\t\r\n\/\/ \u623b\u308b\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ \u73fe\u5728\u6642\u9593\u3092\u6587\u5b57\u5217\u3067\u5f97\u308b\r\n\/\/ --------------------------------\r\nvoid get_daytime(char *daytime_str)\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\t\/\/ \u65e5\u6642\u60c5\u5831\u30c6\u30fc\u30d6\u30eb\u30ed\u30fc\u30ab\u30eb\u5ba3\u8a00\r\n\tstruct timeval tv;\r\n\t\/\/ \u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u30c6\u30fc\u30d6\u30eb\u30ed\u30fc\u30ab\u30eb\u5ba3\u8a00(\u5b9f\u969b\u306b\u306f\u4f7f\u308f\u308c\u306a\u3044)\r\n\tstruct timezone tz;\r\n\t\/\/ \u6587\u5b57\u5217\u65e5\u6642\u60c5\u5831\u30c6\u30fc\u30d6\u30eb\u30ed\u30fc\u30ab\u30eb\u5ba3\u8a00\r\n\tstruct tm now;\r\n\t\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u30920\u3067\u521d\u671f\u5316\r\n\tmemset(&amp;tv, 0, sizeof(tv));\r\n\tmemset(&amp;tz, 0, sizeof(tz));\r\n\t\/\/ \u65e5\u6642\u60c5\u5831\u6587\u5b57\u5217\u3092\u521d\u671f\u5316\r\n\tmemset(daytime_str, 0, DAYTIME_LEN);\r\n\t\r\n\t\/\/ \u73fe\u5728\u65e5\u6642\u3092\u53d6\u5f97\r\n\tgettimeofday(&amp;tv, &amp;tz);\r\n\t\r\n\t\/\/ \u6587\u5b57\u5217\u65e5\u6642\u60c5\u5831\u306b\u5909\u63db\r\n\tlocaltime_r((const time_t*)&amp;(tv.tv_sec), &amp;now);\r\n\t\r\n\t\/\/ \u65e5\u6642\u60c5\u5831\u6587\u5b57\u5217\u3092\u5f15\u6570\u306e\u6587\u5b57\u5217\u30dd\u30a4\u30f3\u30bf\u306b\u8a2d\u5b9a\r\n\tsprintf(daytime_str, &quot;%04d\/%02d\/%02d %02d:%02d:%02d&quot;,\r\n\t\tnow.tm_year + 1900,\r\n\t\tnow.tm_mon + 1,\r\n\t\tnow.tm_mday,\r\n\t\tnow.tm_hour,\r\n\t\tnow.tm_min,\r\n\t\tnow.tm_sec );\r\n\t\r\n\t\/\/ \u623b\u308b\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ \u30b7\u30b0\u30ca\u30eb\u30cf\u30f3\u30c9\u30e9(ALARM)\r\n\/\/ --------------------------------\r\nvoid signal_alarm()\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\t\r\n\t\/\/ SYSLOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\tsprintf(logstr, &quot;ALARM, Interrupt %s&quot;, SOFTNAME);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n}\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ \u30b7\u30b0\u30ca\u30eb\u30cf\u30f3\u30c9\u30e9(SIGHUP)\r\n\/\/ --------------------------------------------------\r\nvoid signal_sighup()\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\t\r\n\t\/\/ SYSLOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\tsprintf(logstr, &quot;SIGHUP, Stopped %s&quot;, SOFTNAME);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\/\/ \u7d42\u308f\u308a\r\n\texit(EXIT_SUCCESS);\r\n}\r\n\r\n\/\/ --------------------------------\r\n\/\/ \u30ed\u30b0\u51fa\u529b\r\n\/\/ --------------------------------\r\nvoid put_log(int mode, char *logstr)\r\n{\r\n\t\/\/ \u901a\u5e38\u30e2\u30fc\u30c9(SYSLOG\u51fa\u529b)\u306a\u3089\r\n\tif (mode == 0)\r\n\t{\r\n\t\t\/\/ syslog\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tsyslog(LOG_NOTICE, logstr);\r\n\t}\r\n\t\/\/ \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u30e2\u30fc\u30c9\u306a\u3089\r\n\telse if (mode == 1)\r\n\t{\r\n\t\t\/\/ \u5225\u30d5\u30a1\u30a4\u30eb\u306b\u51fa\u529b\r\n\t\twrite(gvc_log_fp, (void *)logstr, strlen(logstr));\r\n\t}\r\n\t\/\/ \u4e0a\u8a18\u4ee5\u5916(\u30c0\u30f3\u30d7\u30e2\u30fc\u30c9\u3068\u304b)\u306a\u3089\r\n\telse\r\n\t{\r\n\t\t\/\/ \u73fe\u5728\u65e5\u6642\u3068\u5408\u308f\u305b\u3066\u30ed\u30b0\u6587\u5b57\u5217\u3092\u8868\u793a\r\n\t\tprintf(&quot;&#x5B;%s] %s&quot;, daytime_str, logstr);\r\n\t}\r\n}\r\n\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Main Routine\r\n\/\/ --------------------------------------------------\r\nint main(int argc, char *argv&#x5B;])\r\n{\r\n\t\/\/ ----------------\r\n\t\/\/ \u30ed\u30fc\u30ab\u30eb\u5909\u6570\u5b9a\u7fa9\r\n\t\/\/ ----------------\r\n\tFILE *pidfile;\t\t\t\t\t\t\t\t\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u7528\u30dd\u30a4\u30f3\u30bf\r\n\tstruct stat pidstat;\t\t\t\t\t\t\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u60c5\u5831\r\n\t\r\n\tint argnum;\t\t\t\t\t\t\t\t\t\t\t\/\/ \u5f15\u6570\u30ab\u30a6\u30f3\u30c8\u7528\r\n\t\r\n\tint func_num;\t\t\t\t\t\t\t\t\t\t\/\/ \u30ad\u30e5\u30fc\/\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\u95a2\u6570\u756a\u53f7\r\n\t\r\n\t\/\/ logserial\r\n\tfd_set fds;\t\t\t\t\t\t\t\t\t\t\t\/\/ file descriptor set for reading\r\n\tstruct timeval tv;\t\t\t\t\t\t\t\t\t\/\/ struct for time interval for select\r\n\t\r\n\tint rx_pos = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\u306e\u4f4d\u7f6e\r\n\tint rx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\tint rx_buffer_len = 0;\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u9577\u3055\r\n\tint rx_remainder;\t\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u6b8b\u308a\u306e\u5148\u982d\u4f4d\u7f6e\r\n\tint rx_remainder_len = 0;\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u6b8b\u308a\u306e\u9577\u3055\r\n\t\r\n\/\/\/\tint tx_len = 0;\t\t\t\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u3067\u304d\u305f\u30c7\u30fc\u30bf\u306e\u9577\u3055\r\n\t\r\n\tint check_char;\t\t\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u30c1\u30a7\u30c3\u30af\u7528\u30dd\u30a4\u30f3\u30bf\r\n\tGVC_SERIAL_MESSAGE_t * gvc_serial_message;\t\t\t\/\/ GVC \u30b7\u30ea\u30a2\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(\u30b7\u30ea\u30a2\u30eb\u30c7\u30fc\u30bf\u306b\u304b\u3076\u305b\u308b)\r\n\t\r\n\tGVC_MESSAGE_QUEUE_t rcv_message_queue;\t\t\t\t\/\/ \u53d7\u4fe1\u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\r\n\/\/\/\tGVC_MESSAGE_QUEUE_t send_message_queue;\t\t\t\t\/\/ \u9001\u4fe1\u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\r\n\tint message_qid;\t\t\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fcID\r\n\tint msgq_length;\t\t\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9577\u3055\r\n\tkey_t msgq_key;\t\t\t\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u306e\u30ad\u30fc\r\n\tint msgq_result;\t\t\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u9001\u53d7\u4fe1\u7d50\u679c\r\n\t\r\n\tchar logstr&#x5B;BUFF_SIZE];\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ \u5f15\u6570\u78ba\u8a8d\r\n\t\/\/ ----------------\r\n\t\/\/ \u5f15\u6570\u304c2\u3088\u308a\u5c11\u306a\u3044\u306a\u3089\r\n\tif (argc &lt; 2)\r\n\t{\r\n\t\t\/\/ \u30bd\u30d5\u30c8\u540d\u3068\u4f7f\u3044\u65b9\u3092\u8868\u793a\r\n\t\tprintf(&quot;%s %s\\n\\n&quot;, SOFTNAME, VERSION);\r\n\t\tprintf(&quot;%s &#x5B;end]\\n\\n&quot;, argv&#x5B;0]);\r\n\t\tprintf(&quot; -&gt; %s \/dev\/ttyUSB0 &#x5B;log=file]\\n&quot;, argv&#x5B;0]);\r\n\t\t\/\/ \u7d42\u308f\u308a\r\n\t\texit(1);\r\n\t}\r\n\t\r\n\t\/\/ \u5f15\u6570\u3092\u691c\u67fb\r\n\tfor (argnum = 1; argnum &lt; argc; argnum++)\r\n\t{\r\n\t\t\/\/ \u5f15\u6570\u306e\u4e2d\u306b\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u6307\u5b9a\u304c\u3042\u308b\u306a\u3089\r\n\t\tif (strcasecmp(&quot;log=file&quot;, argv&#x5B;argnum]) == 0)\r\n\t\t{\r\n\t\t\t\/\/ \u52d5\u4f5c\u30e2\u30fc\u30c9\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u30e2\u30fc\u30c9(1)\u306b\u3059\u308b\r\n\t\t\tgvcd_mode = 01;\r\n\t\t}\r\n\t\t\/\/ \u5f15\u6570\u306e\u4e2d\u306b\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u6307\u5b9a\u304c\u3042\u308b\u306a\u3089\r\n\t\tif (strcasecmp(&quot;log=disp&quot;, argv&#x5B;argnum]) == 0)\r\n\t\t{\r\n\t\t\t\/\/ \u52d5\u4f5c\u30e2\u30fc\u30c9\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u753b\u9762\u51fa\u529b\u30e2\u30fc\u30c9(2)\u306b\u3059\u308b\r\n\t\t\tgvcd_mode = 2;\r\n\t\t}\r\n\t\t\/\/ \u5f15\u6570\u306e\u4e2d\u306b\u30c0\u30f3\u30d7\u30e2\u30fc\u30c9\u6307\u5b9a\u304c\u3042\u308b\u306a\u3089\r\n\t\tif (strcasecmp(&quot;mode=dump&quot;, argv&#x5B;argnum]) == 0)\r\n\t\t{\r\n\t\t\t\/\/ \u52d5\u4f5c\u30e2\u30fc\u30c9\u3092\u30c0\u30f3\u30d7\u30e2\u30fc\u30c9(99)\u306b\u3059\u308b\r\n\t\t\tgvcd_mode = 99;\r\n\t\t}\r\n\t}\r\n\t\r\n\t\/\/ \u901a\u5e38\u30e2\u30fc\u30c9(\u30ed\u30b0\u306fSYSLOG\u51fa\u529b)\u306a\u3089\r\n\tif (gvcd_mode == 0)\r\n\t{\r\n\t\t\/\/ ----------------\r\n\t\t\/\/ SYSLOG\u3078\u306e\u63a5\u7d9a\r\n\t\t\/\/ ----------------\r\n\t\topenlog(&quot;gvcd&quot;, LOG_PID, LOG_DAEMON);\r\n\t}\r\n\t\/\/ \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u30e2\u30fc\u30c9\u306a\u3089\r\n\telse if (gvcd_mode == 1)\r\n\t{\r\n\t\t\/\/ \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\r\n\t\tgvc_log_fp = open(GVC_LOG_FILENAME, O_CREAT | O_APPEND | O_RDWR, 0755);\r\n\t\t\/\/ \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u304c\u958b\u3051\u306a\u304b\u3063\u305f\u3089\r\n\t\tif (gvc_log_fp == -1)\r\n\t\t{\r\n\t\t\t\/\/ \u6700\u5f8c\u306e\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u3092\u8868\u793a\r\n\t\t\tperror(GVC_LOG_FILENAME);\r\n\t\t\t\/\/ \u7d42\u308f\u308a\r\n\t\t\texit(3);\r\n\t\t}\r\n\t}\r\n\t\r\n\t\/\/ \u901a\u5e38\u30e2\u30fc\u30c9\u304b\u3001\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u30e2\u30fc\u30c9\u306a\u3089\r\n\tif ((gvcd_mode == 0) || (gvcd_mode == 1))\r\n\t{\r\n\t\t\/\/ ----------------\r\n\t\t\/\/ \u5b50\u30d7\u30ed\u30bb\u30b9\u4f5c\u6210\r\n\t\t\/\/ ----------------\r\n\t\tswitch (fork())\r\n\t\t{\r\n\t\t\tcase 0 :     \/\/ \u5b50\u30d7\u30ed\u30bb\u30b9\u306f\u51e6\u7406\u7d9a\u884c\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\t\t\t\tsprintf(logstr, &quot;Child Process is continue.&quot;);\r\n\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\tbreak;\r\n\t\t\tcase -1 :    \/\/ fork\u95a2\u6570\u7570\u5e38\u7d42\u4e86\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\t\t\t\tsprintf(logstr, &quot;fork() error!?&quot;);\r\n\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\treturn -1;\r\n\t\t\tdefault :    \/\/ \u89aa\u30d7\u30ed\u30bb\u30b9\u306f\u7d42\u4e86\u3059\u308b\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\t\t\t\tsprintf(logstr, &quot;Parent Process is end.&quot;);\r\n\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\t\/\/ \u7d42\u308f\u308a\r\n\t\t\t\texit(0);\r\n\t\t}\r\n\t\t\r\n\t\t\/\/ ----------------\r\n\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u3092\u30c1\u30a7\u30c3\u30af\r\n\t\t\/\/ ----------------\r\n\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u304c\u306a\u3044\u306a\u3089\r\n\t\tif (stat(GVC_PID_FILENAME, &amp;pidstat) == -1)\r\n\t\t{\r\n\t\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u3092\u65b0\u898f\u306b\u958b\u304f\r\n\t\t\tpidfile = fopen(GVC_PID_FILENAME, &quot;w&quot;);\r\n\t\t\t\/\/ \u958b\u3051\u306a\u304b\u3063\u305f\u3089\r\n\t\t\tif (pidfile == NULL)\r\n\t\t\t{\r\n\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\t\tsprintf(logstr, &quot;Could not open pid file : %s&quot;, GVC_PID_FILENAME);\r\n\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\t\/\/ \u7d42\u308f\u308a\r\n\t\t\t\texit(EXIT_FAILURE);\r\n\t\t\t}\r\n\t\t\t\/\/ \u958b\u3051\u305f\u306a\u3089\r\n\t\t\telse\r\n\t\t\t{\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\t\t\t\tsprintf(logstr, &quot;Started Grobal Versatile Controler daemon&quot;);\r\n\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308b\u306a\u3089\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;Found a pid file : %s&quot;, GVC_PID_FILENAME);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\/\/ \u7d42\u308f\u308a\r\n\t\t\texit(EXIT_FAILURE);\r\n\t\t}\r\n\t\t\r\n\t\t\/\/ \u65b0\u3057\u3044\u30bb\u30c3\u30b7\u30e7\u30f3\u4f5c\u6210\u3001\u304c\u5931\u6557\u3057\u305f\u306a\u3089\r\n\t\tif (setsid() &lt; 0)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;setsid error&quot;);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\/\/ \u7d42\u308f\u308a\r\n\t\t\texit(EXIT_FAILURE);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\t\t\tsprintf(logstr, &quot;setsid OK&quot;);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\r\n\t\t\/\/ \u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u30c8\u30c3\u30d7\u306b\u79fb\u52d5\r\n\t\tif (chdir(&quot;\/&quot;) &lt; 0)\r\n\t\t{\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\tsprintf(logstr, &quot;chdir \/ error&quot;);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\/\/ \u7d42\u308f\u308a\r\n\t\t\texit(EXIT_FAILURE);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\t\t\tsprintf(logstr, &quot;chdir \/ OK&quot;);\r\n\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t}\r\n\t\t\r\n\t\t\/\/ umask \u3092\u30ea\u30bb\u30c3\u30c8\r\n\t\tumask(0);\r\n\t\t\r\n\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u306b\u73fe\u5728\u306ePID\u3092\u51fa\u529b\r\n\t\tfprintf(pidfile, &quot;%ld\\n&quot;, (long) getpid());\r\n\t\tfclose(pidfile);\r\n\t\t\r\n\t\t\/\/ stdin, stdout, stderr\u3092\u9589\u3058\u308b\r\n\t\tint fd = 0;\r\n\t\tint fdlimit = sysconf(_SC_OPEN_MAX);\r\n\t\twhile (fd &lt; fdlimit)\r\n\t\t{\r\n\t\t\tclose(fd++);\r\n\t\t}\r\n\t}\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ \u521d\u671f\u51e6\u7406\r\n\t\/\/ ----------------\r\n\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u3092\u30af\u30ea\u30a2\r\n\tmemset(rx_buffer, 0, BUFF_SIZE);\r\n\t\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\tsprintf(logstr, &quot;Device:%s Open!&quot;, argv&#x5B;1] );\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ \u30c7\u30d0\u30a4\u30b9\uff08\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\uff09\u30aa\u30fc\u30d7\u30f3:\u8aad\u307f\u66f8\u304d\u7528\u3001TTY\u5236\u5fa1\u305b\u305a\r\n\/\/\/\tgvc_port = open(argv&#x5B;1], O_RDWR);\r\n\tgvc_port = open(argv&#x5B;1], O_RDWR | O_NOCTTY);\r\n\t\/\/ \u30c7\u30d0\u30a4\u30b9\u304c\u958b\u3051\u306a\u304b\u3063\u305f\u3089\r\n\tif(gvc_port &lt; 0)\r\n\t{\r\n\t\t\/\/ \u6700\u5f8c\u306e\u30b7\u30b9\u30c6\u30e0\u30a8\u30e9\u30fc\u3092\u8868\u793a\r\n\t\tperror(argv&#x5B;1]);\r\n\t\t\/\/ \u7d42\u308f\u308a\r\n\t\texit(2);\r\n\t}\r\n\t\r\n\t\/\/ OK\u306a\u3089\u3001\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3092\u521d\u671f\u5316\r\n\tserial_reset(gvc_port);\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u30ad\u30e5\u30fc\u51e6\u7406\u30c6\u30fc\u30d6\u30eb\u306e\u521d\u671f\u5316\u51e6\u7406(\u623b\u308a\u5024:int\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u305d\u306e\u3082\u306e\u306f(void *)\u306b\u578b\u30ad\u30e3\u30b9\u30c8\u3057\u3066\u6e21\u3059(\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4e2d\u8eab\u306f\u305d\u308c\u305e\u308c\u7570\u306a\u308b\u305f\u3081)\r\n\t\/\/ ----------------\r\n\tfor( func_num = 0; func_num &lt;= 0xff; func_num++ )\r\n\t{\r\n\t\t\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\u30c6\u30fc\u30d6\u30eb\u306b\u30c0\u30df\u30fc\u51e6\u7406\u3092\u5165\u308c\u308b\r\n\t\tgvc_queue_job&#x5B;func_num] = &amp;gvc_q_job_dummy;\r\n\t}\r\n\t\r\n\t\/\/ ----------------\r\n\t\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\u30c6\u30fc\u30d6\u30eb\u306e\u521d\u671f\u5316\u51e6\u7406(\u623b\u308a\u5024:int\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u305d\u306e\u3082\u306e\u306f(void *)\u306b\u578b\u30ad\u30e3\u30b9\u30c8\u3057\u3066\u6e21\u3059(\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u4e2d\u8eab\u306f\u305d\u308c\u305e\u308c\u7570\u306a\u308b\u305f\u3081)\r\n\t\/\/ ----------------\r\n\tfor( func_num = 0; func_num &lt;= 0xff; func_num++ )\r\n\t{\r\n\t\t\/\/ GVC\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\u30c6\u30fc\u30d6\u30eb\u306b\u30c0\u30df\u30fc\u51e6\u7406\u3092\u5165\u308c\u308b\r\n\t\tgvc_msg_job&#x5B;func_num] = &amp;gvc_msg_job_dummy;\r\n\t}\r\n\t\r\n\t\/\/ ------------------------------\r\n\t\/\/ \u500b\u5225\u306b\u30ad\u30e5\u30fc\u51e6\u7406\u95a2\u6570\u306e\u30dd\u30a4\u30f3\u30bf\u3092\u8a2d\u5b9a\r\n\t\/\/ ------------------------------\r\n\tgvc_queue_job&#x5B;0x01] = &amp;gvc_q_job_version;\r\n\tgvc_queue_job&#x5B;0x02] = &amp;gvc_q_job_modulelist;\r\n\tgvc_queue_job&#x5B;0x03] = &amp;gvc_q_job_moduledata;\r\n\tgvc_queue_job&#x5B;0x20] = &amp;gvc_q_job_switchoff;\r\n\tgvc_queue_job&#x5B;0x21] = &amp;gvc_q_job_switchon;\r\n\tgvc_queue_job&#x5B;0x2f] = &amp;gvc_q_job_switchstatus;\r\n\tgvc_queue_job&#x5B;0x91] = &amp;gvc_q_job_irtx;\r\n\tgvc_queue_job&#x5B;0x92] = &amp;gvc_q_job_irrx;\r\n\tgvc_queue_job&#x5B;0x93] = &amp;gvc_q_job_irset;\r\n\tgvc_queue_job&#x5B;0x94] = &amp;gvc_q_job_irget;\r\n\tgvc_queue_job&#x5B;0x95] = &amp;gvc_q_job_irdel;\r\n\tgvc_queue_job&#x5B;0x7e] = &amp;gvc_q_job_masterreset;\r\n\tgvc_queue_job&#x5B;0x7f] = &amp;gvc_q_job_masterstop;\r\n\tgvc_queue_job&#x5B;0xff] = &amp;gvc_q_job_daemonstop;\r\n\t\r\n\t\/\/ ------------------------------\r\n\t\/\/ \u500b\u5225\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u51e6\u7406\u95a2\u6570\u306e\u30dd\u30a4\u30f3\u30bf\u3092\u8a2d\u5b9a\r\n\t\/\/ ------------------------------\r\n\tgvc_msg_job&#x5B;GVC_MSG_DELIMITER] = &amp;gvc_msg_job_delimiterframe;\r\n\tgvc_msg_job&#x5B;GVC_MSG_OTHER] = &amp;gvc_msg_job_other;\r\n\tgvc_msg_job&#x5B;GVC_MSG_DIST] = &amp;gvc_msg_job_distance;\r\n\tgvc_msg_job&#x5B;GVC_MSG_HUMI] = &amp;gvc_msg_job_humidity;\r\n\tgvc_msg_job&#x5B;GVC_MSG_IR] = &amp;gvc_msg_job_ir;\r\n\tgvc_msg_job&#x5B;GVC_MSG_TEMP] = &amp;gvc_msg_job_temperature;\r\n\tgvc_msg_job&#x5B;GVC_MSG_LIGHT] = &amp;gvc_msg_job_light;\r\n\tgvc_msg_job&#x5B;GVC_MSG_PRESS] = &amp;gvc_msg_job_pressure;\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9577\u3055\u3092\u8a2d\u5b9a\r\n\tmsgq_length = sizeof(GVC_MESSAGE_QUEUE_t) - sizeof(unsigned long);\r\n\t\r\n\t\/\/ \u30d1\u30b9\u540d\u3068\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8b58\u5225\u5b50\u3092 System V IPC \u30ad\u30fc\u306b\u5909\u63db\u3059\u308b(\u547d\u4ee4\u30ad\u30e5\u30fc)\r\n\t\/\/ gvcd\u304c\u52d5\u3044\u3066\u3044\u308b\u3053\u3068\u304c\u524d\u63d0\u306a\u306e\u3067\u3001gvcd\u306ePID\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u751f\u6210\u3059\u308c\u3070OK\u3002\r\n\tmsgq_key = ftok(GVC_PID_FILENAME, 'w');\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u3092\u4f5c\u6210(\u65b0\u898f\u4f5c\u6210\u3060\u304c\u3001\u65e2\u5b58\u3060\u3063\u305f\u5834\u5408\u306b\u306f\u30a8\u30e9\u30fc\u2026\u306b\u3057\u305f\u65b9\u304c\u3044\u3044\u306e\u304b\u3001\u3069\u3046\u306a\u306e\u304b\uff1f\r\n\/\/\tmessage_qid = msgget(msgq_key, IPC_CREAT | IPC_EXCL | 0660);\r\n\t\/\/ \u30b3\u30de\u30f3\u30c9(gvc_cmd\u7cfb)\u306e\u5b9f\u884c\u3092\u8ab0\u3067\u3082\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306a\u30890666\u3068\u3059\u308b\u3053\u3068)\r\n\tmessage_qid = msgget(msgq_key, IPC_CREAT | 0666);\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u304c\u4f5c\u6210\u3067\u304d\u305f\u306a\u3089(message_qid!=-1)\r\n\tif (message_qid != -1)\r\n\t{\r\n\/\/\/ \u30c7\u30d0\u30c3\u30b0\u7528\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\/\/\/\t\tsprintf(logstr, &quot;QID = %d, msgq_length=%d&quot;, message_qid, msgq_length);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\/\/\/\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u304c\u4f5c\u6210\u3067\u304d\u306a\u304b\u3063\u305f\u3089(message_qid=-1)\r\n\telse\r\n\t{\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;Message Queue make error : %s&quot;, strerror(errno));\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t\t\/\/ \u7d42\u308f\u308a\r\n\t\texit(EXIT_FAILURE);\r\n\t}\r\n\t\r\n\t\/\/\u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u90e8\u5206\u3092\u521d\u671f\u5316\r\n\tmemset((void *)&amp;rcv_message_queue.q, msgq_length, 0x00);\r\n\t\r\n\t\/\/ \u30c7\u30fc\u30bf\u683c\u7d0d\u30d5\u30e9\u30b0\u521d\u671f\u5316\r\n\tdatafp_flag = 0;\r\n\t\r\n\t\/\/ ------------------------------\r\n\t\/\/ \u30e1\u30a4\u30f3\u306e\u7121\u9650\u30eb\u30fc\u30d7\r\n\t\/\/ ------------------------------\r\n\t\r\n\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u3092\u521d\u671f\u5316\r\n\tmemset((void *)rx_buffer, 0x00, BUFF_SIZE);\r\n\t\r\n\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)rx_buffer;\r\n\t\r\n\t\/\/ \u8d77\u52d5\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u30c7\u30fc\u30bf\u306b\u8a2d\u5b9a\r\n\tgvc_serial_message-&gt;msg_type = GVC_MSG_OTHER;\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7\u3092\u8a2d\u5b9a\r\n\tgvc_serial_message-&gt;dev_num = 0xFF;\t\t\t\t\t\/\/ \u30c7\u30d0\u30a4\u30b9\u756a\u53f7\u3092\u8a2d\u5b9a\r\n\tgvc_serial_message-&gt;format = 0x01;\t\t\t\t\t\/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092\u8a2d\u5b9a(0x01=\u901a\u5e38\u30c6\u30ad\u30b9\u30c8)\r\n\tgvc_serial_message-&gt;cmd = 0x01;\t\t\t\t\t\t\/\/ \u7d50\u679c(\u60c5\u5831\u7a2e\u5225)\u3092\u8a2d\u5b9a(0x01=\u521d\u671f\u60c5\u5831\u3001\u30b7\u30b9\u30c6\u30e0\u60c5\u5831)\r\n\tsprintf((char *)gvc_serial_message-&gt;data, &quot;%s Ver.%s Start (_IO_BUFSIZ=%d)&quot;, SOFTNAME, VERSION, _IO_BUFSIZ);\t\/\/ \u30c7\u30fc\u30bf\u3092\u8a2d\u5b9a\r\n\tgvc_serial_message-&gt;data_len = strlen((char *)gvc_serial_message-&gt;data);\t\t\/\/ \u30c7\u30fc\u30bf\u9577\u3092\u8a2d\u5b9a\r\n\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\tgvc_serial_message-&gt;data&#x5B; gvc_serial_message-&gt;data_len ] = GetCRC8((void *)gvc_serial_message, GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_serial_message-&gt;data_len);\r\n\t\/\/ \u2191\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u5074\u306f\u3001\u30c7\u30fc\u30bf\u306eCRC\u3092\u8a08\u7b97\u3057\u305f\u3042\u3068\u3067\r\n\t\/\/ \u3000\u305d\u306eCRC\u3092\u30c7\u30fc\u30bf\u306e\u6700\u5f8c\u306b\u9023\u7d50\u3057\u3066\u76f8\u624b\u306b\u9001\u308c\u3070\u3044\u3044\r\n\r\n\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u4f4d\u7f6e\u3092\u8a2d\u5b9a\r\n\trx_pos = GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_serial_message-&gt;data_len + 1;\r\n\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u9577\u3055\u3092\u8a2d\u5b9a\r\n\trx_buffer_len = rx_pos;\r\n\t\r\n\twhile(1)\r\n\t{\r\n\t\t\/\/ GVC\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\u53ef\u80fd\u72b6\u614b(=1)\u306a\u3089\r\n\t\twhile(gvc_cmd_ready)\r\n\t\t{\r\n\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u53d7\u4fe1\u2026\u3053\u3053\u3067\u306fgvcd\u306b\u5bfe\u3057\u3066\u306e\u547d\u4ee4\u3092\u9001\u4fe1\u3057\u3066\u3044\u308b\r\n\t\t\t\/\/ \u300c\u6c42\u3081\u3066\u3044\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u306a\u3044\u300d\u3053\u3068\u3082\u3042\u308b\uff0emsgflg\u3068\u3057\u3066IPC_NOWAIT\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\r\n\t\t\t\/\/ \u308b\u5834\u5408\u306b\u306f\u3059\u3050\u306b\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u304c\uff0c\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u306b\u306f\u6c42\u3081\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u5f97\u3089\u308c\u308b\u304b\uff0c\r\n\t\t\t\/\/ \u30ad\u30e5\u30fc\u304c\u6d88\u3048\u308b\u304b\uff0c\u30b7\u30b0\u30ca\u30eb\u3067\u6355\u7372\u3055\u308c\u308b\u307e\u3067\u5f85\u3064\uff0e\r\n\t\t\tmsgq_result = msgrcv(message_qid, &amp;rcv_message_queue, msgq_length, COMMAND_Q, IPC_NOWAIT);\r\n\t\t\t\r\n\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u53d7\u4fe1\u3067\u304d\u305f\u306a\u3089(!=-1)\r\n\t\t\tif (msgq_result != -1)\r\n\t\t\t{\r\n\t\t\t\t\/\/ \u3053\u3053\u3067\u672c\u6765\u306f\u53d7\u4fe1\u3057\u305f\u30ad\u30e5\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306eCRC\u306e\u30c1\u30a7\u30c3\u30af\u3092\u3057\u305f\u3044\u304c\u2026\r\n\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u3001\u3068\u3044\u3046\u304bLinux\u30ec\u30d9\u30eb\u306b\u306a\u308b\u3068\u30c6\u30fc\u30d6\u30eb\u69cb\u9020\u4f53\u306e\u30a2\u30e9\u30a4\u30f3\u30e1\u30f3\u30c8\u304c\u884c\u308f\u308c\u308b\u304b\u3089\u5b9f\u8cea\u3067\u304d\u306a\u3044\u3002\r\n\t\t\t\t\r\n\t\t\t\t\/\/ \u6642\u9593\u3092\u53d6\u5f97(\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306b\u683c\u7d0d)\r\n\t\t\t\tget_daytime(daytime_str);\r\n\t\t\t\t\/\/ \u30ad\u30e5\u30fc\u306b\u57fa\u3065\u3044\u3066\u51e6\u7406\r\n\t\t\t\tgvc_queue_job&#x5B; rcv_message_queue.q.cmd ]( (void *)&amp;rcv_message_queue );\r\n\t\t\t\t\r\n\t\t\t\t\/\/ \u3082\u3057END\u30b3\u30de\u30f3\u30c9\u304c\u304d\u3066\u3044\u305f\u3089\r\n\t\t\t\tif (rcv_message_queue.q.cmd == 0xff)\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ \u7d42\u4e86\u3059\u308b\r\n\t\t\t\t\tgoto END_JOB;\r\n\t\t\t\t} \r\n\t\t\t}\r\n\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u53d7\u4fe1\u3067\u304d\u306a\u304b\u3063\u305f\u3089(=-1)\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u306a\u3044\u3001\u3067\u306f\u306a\u304b\u3063\u305f\u3089\r\n\t\t\t\tif (errno != ENOMSG)\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\t\t\tsprintf(logstr, &quot;QUEUE ERROR : %s&quot;, strerror(errno));\r\n\t\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\t\t\/\/ \u7d42\u4e86\u3059\u308b\r\n\t\t\t\t\tgoto END_JOB;\r\n\t\t\t\t}\r\n\t\t\t\t\/\/ \u7279\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u306a\u3044\u306a\u3089\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u53d7\u4fe1\u304b\u3089\u629c\u3051\u308b\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\/\/ GVC\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\u53ef\u80fd\u72b6\u614b\u3092\u30c7\u30ea\u30df\u30bf\u5f85\u3061(=0)\u306b\u8a2d\u5b9a\r\n\t\tgvc_cmd_ready = 0;\r\n\t\t\r\n\t\t\/\/ \u53d7\u4fe1\u5f85\u3061\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u6642\u9593\u3092\u8a2d\u5b9a (1\u79d2\u307e\u3064)\r\n\t\ttv.tv_sec  = 1;\r\n\t\ttv.tv_usec = 0;\r\n\t\t\r\n\t\t\/\/ \u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30b9\u30af\u30ea\u30d7\u30bf\u3092\u3044\u3063\u305f\u3093\u521d\u671f\u5316(0\u30ea\u30bb\u30c3\u30c8)\r\n\t\tFD_ZERO(&amp;fds );\r\n\t\t\/\/ \u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30b9\u30af\u30ea\u30d7\u30bf\u3092\u8a2d\u5b9a\r\n\t\tFD_SET(gvc_port, &amp;fds);\r\n\t\t\r\n\t\t\/\/ \u4f55\u304b\u30c7\u30fc\u30bf\u304c\u6765\u305f\u304b\u3001\u3082\u3057\u304f\u306f\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306a\u3089\r\n\t\tif (select(gvc_port + 1, &amp;fds, NULL, NULL, &amp;tv) &gt; 0)\r\n\t\t{\r\n\t\t\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306b\u53d6\u5f97\r\n\t\t\trx_len = read(gvc_port, rx_buffer + rx_pos, BUFF_SIZE);\r\n\t\t\t\r\n\t\t\t\/\/ \u8aad\u307f\u51fa\u3057\u30a8\u30e9\u30fc\u306a\u3089\r\n\t\t\tif (rx_len &lt; 0)\r\n\t\t\t{\r\n\t\t\t\t\/\/ \u3082\u3057\u5272\u308a\u8fbc\u307f\u306b\u3088\u308b\u4e2d\u65ad\u3060\u3063\u305f\u3089\r\n\t\t\t\tif (errno == EINTR)\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\t\t\tsprintf(logstr, &quot;READ is EINTR. rx_len=%d, errno=%d&quot;, rx_len, errno);\r\n\t\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\t}\r\n\t\t\t\t\/\/ \u305d\u308c\u4ee5\u5916\u306e\u5834\u5408\u306b\u306f\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\t\t\tsprintf(logstr, &quot;READ is OTHER ERROR !? rx_len=%d, errno=%d&quot;, rx_len, errno);\r\n\t\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\t\t\/\/ \u7d42\u4e86\u3059\u308b\r\n\t\t\t\t\tgoto END_JOB;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\/\/ \u8aad\u307f\u51fa\u3057\u30b5\u30a4\u30ba\u304c\u306a\u304b\u3063\u305f\u5834\u5408\u306b\u306f\r\n\t\t\telse if (rx_len == 0)\r\n\t\t\t{\r\n\t\t\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\t\t\tsprintf(logstr, &quot;READ is ZERO !? rx_len=%d, errno=%d&quot;, rx_len, errno);\r\n\t\t\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\t\t\tput_log(gvcd_mode, logstr);\r\n\t\t\t\t\/\/ \u53d7\u4fe1\u3057\u306a\u304a\u3057\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t\/\/ \u6b63\u5e38\u306b\u8aad\u3081\u305f\u3068\u304d\u306b\u306f\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t\/\/ \u6b21\u306e\u53d7\u4fe1\u4f4d\u7f6e\u3092\u8a2d\u5b9a\r\n\t\t\t\trx_pos += rx_len;\r\n\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u9577\u3092\u8a2d\u5b9a\r\n\t\t\t\trx_buffer_len += rx_len;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t\/\/ \u30de\u30b9\u30bf\u30fc\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u5f85\u3061\r\n\t\t\/\/ rx_buffer_len\u304c\u6700\u5c0f\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30a4\u30ba\u4ee5\u4e0a\u306e(5\u500d\u304f\u3089\u3044\u306e)\u9577\u3055\u304c\u3042\u308b\u306a\u3089\u3001\u89e3\u6790\u51e6\u7406\u3092\u3059\u308b\r\n\t\tif (rx_buffer_len &gt;= GVC_MIN_MESSAGE_LENGTH)\r\n\t\t{\r\n\t\t\t\/\/ 0\u304b\u3089rx_len-GVC_MIN_MESSAGE_LENGTH\u306e\u4e2d\u306b\u6709\u52b9\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u30b9\u30ad\u30e3\u30f3\r\n\t\t\tfor (check_char = 0; check_char &lt;= (rx_buffer_len - GVC_MIN_MESSAGE_LENGTH); check_char ++)\r\n\t\t\t{\r\n\t\t\t\t\/\/ 0xaa\u304c\u5408\u3063\u305f\u3089\u3001\r\n\t\t\t\tif (rx_buffer&#x5B;check_char] == 0xaa)\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ rx_buffer_len\u304ccheck_char+DELIMITER_LENGTH+1\u4ee5\u4e0a\u3042\u308b\u306a\u3089\r\n\t\t\t\t\tif (rx_buffer_len &gt;= check_char + (DELIMITER_LENGTH + 1))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\/\/ \u305d\u3053\u304b\u308916\u30d0\u30a4\u30c8\u6bd4\u8f03\u3057\u3066\u30c7\u30ea\u30df\u30bf\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3042\u308a\u3001\u304b\u3064CRC\u30c1\u30a7\u30c3\u30af\u3082OK\u306a\u3089\r\n\t\t\t\t\t\tif (memcmp(rx_buffer + check_char, (void *)GVC_DELIMITER_MSG, DELIMITER_LENGTH) == 0 &amp;&amp;\r\n\t\t\t\t\t\t\tGetCRC8((void *)(rx_buffer + check_char), (DELIMITER_LENGTH + 1)) == 0 )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\/\/ \u6642\u9593\u3092\u53d6\u5f97(\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306b\u683c\u7d0d)\r\n\t\t\t\t\t\t\tget_daytime(daytime_str);\r\n\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u57fa\u3065\u3044\u3066\u51e6\u7406\r\n\t\t\t\t\t\t\tgvc_msg_job_delimiterframe((void *)rx_buffer + check_char);\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u306e\u5148\u982d\u4f4d\u7f6e\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\trx_remainder = check_char + (DELIMITER_LENGTH + 1);\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u3092\u8a08\u7b97\r\n\t\t\t\t\t\t\trx_remainder_len = rx_buffer_len - rx_remainder;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u304c\u306a\u3044\u306a\u3089\r\n\t\t\t\t\t\t\tif (rx_remainder_len == 0)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\/\/ \u6b21\u306e\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_pos = 0;\r\n\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u9577\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_buffer_len = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u304c\u3042\u308b\u306a\u3089\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6b21\u304b\u3089\u6b8b\u308a\u306e\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u5148\u982d\u306b\u30b3\u30d4\u30fc\r\n\t\t\t\t\t\t\t\tmemmove(rx_buffer, rx_buffer + rx_remainder, rx_remainder_len);\r\n\t\t\t\t\t\t\t\t\/\/ \u6b21\u306e\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_pos = rx_remainder_len;\r\n\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u9577\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_buffer_len = rx_remainder_len;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ \u30b9\u30ad\u30e3\u30f3\u30eb\u30fc\u30d7\u304b\u3089\u629c\u3051\u308b\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\/\/ \u6709\u52b9\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7\u304c\u3042\u3063\u305f\u3089\u3001\r\n\t\t\t\telse if (gvc_msg_job&#x5B; rx_buffer&#x5B;check_char] ] != &amp;gvc_msg_job_dummy)\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306bGVC_SERIAL_MESSAGE_t\u3092\u304b\u3076\u305b\u308b\r\n\t\t\t\t\tgvc_serial_message = (GVC_SERIAL_MESSAGE_t *)(rx_buffer + check_char);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u5185\u306bCRC\u307e\u3067\u542b\u3081\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u30d5\u30ec\u30fc\u30e0\u304c\u53ce\u307e\u3063\u3066\u3044\u308b\u306a\u3089\r\n\t\t\t\t\tif ( rx_buffer_len &gt;= check_char + (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_serial_message-&gt;data_len + 1) )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\/\/ CRC\u30c1\u30a7\u30c3\u30af\u3057\u3066OK\u306a\u3089\r\n\t\t\t\t\t\tif ( GetCRC8((void *)gvc_serial_message, (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_serial_message-&gt;data_len + 1)) == 0 )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\/\/ \u6642\u9593\u3092\u53d6\u5f97(\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306b\u683c\u7d0d)\r\n\t\t\t\t\t\t\tget_daytime(daytime_str);\r\n\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u57fa\u3065\u3044\u3066\u51e6\u7406\r\n\t\t\t\t\t\t\tgvc_msg_job&#x5B;  gvc_serial_message-&gt;msg_type ]( (void *)gvc_serial_message );\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u306e\u5148\u982d\u4f4d\u7f6e\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\trx_remainder = check_char + (GVC_SERIAL_MESSAGE_HEADER_SIZE + gvc_serial_message-&gt;data_len + 1);\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u3092\u8a08\u7b97\r\n\t\t\t\t\t\t\trx_remainder_len = rx_buffer_len - rx_remainder;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u304c\u306a\u3044\u306a\u3089\r\n\t\t\t\t\t\t\tif (rx_remainder_len == 0)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\/\/ \u6b21\u306e\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_pos = 0;\r\n\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u9577\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_buffer_len = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\/\/ \u3042\u307e\u3063\u305f\u30c7\u30fc\u30bf\u304c\u3042\u308b\u306a\u3089\r\n\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6b21\u304b\u3089\u6b8b\u308a\u306e\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u5148\u982d\u306b\u30b3\u30d4\u30fc\r\n\t\t\t\t\t\t\t\tmemmove(rx_buffer, rx_buffer + rx_remainder, rx_remainder_len);\r\n\t\t\t\t\t\t\t\t\/\/ \u6b21\u306e\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_pos = rx_remainder_len;\r\n\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u9577\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\t\t\trx_buffer_len = rx_remainder_len;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\/\/ \u30b9\u30ad\u30e3\u30f3\u30eb\u30fc\u30d7\u304b\u3089\u629c\u3051\u308b\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\/\/ \u7d42\u4e86\u3059\u308b\u5834\u5408\u306b\u3053\u3053\u306b\u98db\u3076\r\n\tEND_JOB:\r\n\t\/\/ \u30dd\u30fc\u30c8\u3092\u9589\u3058\u308b\r\n\tclose(gvc_port);\r\n\t\r\n\t\/\/ \u901a\u5e38\u30e2\u30fc\u30c9\u304b\u3001\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u5225\u51fa\u529b\u30e2\u30fc\u30c9\u306a\u3089\r\n\tif ((gvcd_mode == 0) || (gvcd_mode == 1))\r\n\t{\r\n\t\t\/\/ PID\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\r\n\t\tunlink(GVC_PID_FILENAME);\r\n\t\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\t\tsprintf(logstr, &quot;DELETED PID FILE&quot;);\r\n\t\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\t\tput_log(gvcd_mode, logstr);\r\n\t}\r\n\t\r\n\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u3092\u7834\u68c4\r\n\tmsgctl(message_qid, IPC_RMID, 0);\r\n\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\tsprintf(logstr, &quot;MESSAGE QUEUE DELETED&quot;);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ LOG\u30e1\u30c3\u30bb\u30fc\u30b8\u8a2d\u5b9a\r\n\tsprintf(logstr, &quot;GVCD END. Thank you! :-)&quot;);\r\n\t\/\/ \u30ed\u30b0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u51fa\u529b\r\n\tput_log(gvcd_mode, logstr);\r\n\t\r\n\t\/\/ \u7d42\u308f\u308a\r\n\treturn 0;\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; \/\/ Global Versatile Controler http:\/\/www.gvc-on.net\/ \/\/  &hellip; <a href=\"https:\/\/www.gvc-on.net\/?page_id=617\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":609,"menu_order":20,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-617","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=617"}],"version-history":[{"count":1,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/617\/revisions"}],"predecessor-version":[{"id":618,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/617\/revisions\/618"}],"up":[{"embeddable":true,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/609"}],"wp:attachment":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}