{"id":42,"date":"2024-09-18T08:27:27","date_gmt":"2024-09-17T23:27:27","guid":{"rendered":"https:\/\/bokumin45.server-on.net\/blog\/?p=42"},"modified":"2025-10-07T14:57:43","modified_gmt":"2025-10-07T05:57:43","slug":"davis-vantage-pro2-%e3%83%97%e3%83%a9%e3%82%b9%e3%81%a8armadillo%e3%81%a7%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%ab%e9%80%9a%e4%bf%a1%e3%82%92%e8%a1%8c%e3%81%86","status":"publish","type":"post","link":"https:\/\/www.bokumin.org\/blog\/2024\/09\/18\/davis-vantage-pro2-%e3%83%97%e3%83%a9%e3%82%b9%e3%81%a8armadillo%e3%81%a7%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%ab%e9%80%9a%e4%bf%a1%e3%82%92%e8%a1%8c%e3%81%86\/","title":{"rendered":"Davis Vantage Pro2 \u30d7\u30e9\u30b9\u3068Armadillo\u3067\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u3092\u884c\u3046"},"content":{"rendered":"\n<p class=\"has-medium-font-size\"><em>Implementing Serial Communication between Davis Vantage Pro2 Plus and Armadillo<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u6c17\u8c61\u89b3\u6e2c\u6a5f\u5668\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308bDavis Vantage Pro2\u3068\u3001\u7d44\u307f\u8fbc\u307fLinux\u30dc\u30fc\u30c9\u3067\u3042\u308bArmadillo G3\u3068\u306e\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u3092\u5b9f\u88c5\u3059\u308b\u6a5f\u4f1a\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u5b9f\u969b\u306b\u4f7f\u7528\u3057\u305f\u30b3\u30fc\u30c9\u3068\u5171\u306b\u3001\u5b9f\u88c5\u306e\u8a73\u7d30\u3001\u6ce8\u610f\u70b9\u3092\u5171\u6709\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\"><strong>\u30b7\u30b9\u30c6\u30e0\u69cb\u6210<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6c17\u8c61\u89b3\u6e2c\u6a5f\u5668: Davis Vantage Pro2<\/li>\n\n\n\n<li>\u7d44\u307f\u8fbc\u307f\u30dc\u30fc\u30c9: Armadillo G3<\/li>\n\n\n\n<li>\u901a\u4fe1\u65b9\u5f0f: \u30b7\u30ea\u30a2\u30eb\u901a\u4fe1 (RS-232C)<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e: C++<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0b\u306b\u5b9f\u88c5\u306e\u6982\u8981\u3092\u8ff0\u3079\u3066\u3044\u304d\u307e\u3059\u3002\u4eca\u56de\u306f\u3053\u306e<a href=\"https:\/\/wiki.greengaragedetroit.com\/images\/e\/e4\/VantageSerialProtocolDocs_v230.pdf\">\u53c2\u8003\u30de\u30cb\u30e5\u30a2\u30eb<\/a>\u3092\u53c2\u8003\u306b\u3057\u3066\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/wiki.greengaragedetroit.com\/images\/e\/e4\/VantageSerialProtocolDocs_v230.pdf\">https:\/\/wiki.greengaragedetroit.com\/images\/e\/e4\/VantageSerialProtocolDocs_v230.pdf<\/a><\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>\u30b3\u30fc\u30c9\u306e\u8a73\u7d30\u8aac\u660e<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>int serial_port = open(\"\/dev\/ttyUSB0\", O_RDWR);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> serial_port <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">open<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\/dev\/ttyUSB0<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> O_RDWR<\/span><span style=\"color: #89DDFF\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u307e\u305a\u3001<code>open()<\/code>\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u8aad\u307f\u66f8\u304d\u4e21\u65b9\u53ef\u306e\u30e2\u30fc\u30c9\u3067\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\uff08<code>\/dev\/ttyUSB0<\/code>\uff09\u3092\u30aa\u30fc\u30d7\u30f3\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>struct termios tty;\nmemset(&amp;tty, 0, sizeof(tty));\nif (tcgetattr(serial_port, &amp;tty) != 0) {\n    std::cerr &lt;&lt; \"tcgetattr\u306b\u5931\u6557\u3057\u307e\u3057\u305f\" &lt;&lt; std::endl;\n    return 1;\n }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C792EA\">struct<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #FFCB6B\">termios<\/span><span style=\"color: #BABED8\"> tty<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #82AAFF\">memset<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">sizeof(<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #82AAFF\">tcgetattr<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">!=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">cerr <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">tcgetattr\u306b\u5931\u6557\u3057\u307e\u3057\u305f<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>termios\u69cb\u9020\u4f53\u3092\u4f7f\u7528\u3057\u3066\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u306e\u73fe\u5728\u306e\u8a2d\u5b9a\u3092\u53d6\u5f97\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u8a2d\u5b9a\n  tty.c_cflag &amp;= ~PARENB; \/\/ parity bit\u7121\u52b9\n  tty.c_cflag &amp;= ~CSTOPB; \/\/ stop bit\u30921\u3064\u306b\u8a2d\u5b9a\n  tty.c_cflag &amp;= ~CSIZE; \/\/ \u30c7\u30fc\u30bf\u30d3\u30c3\u30c8\u30de\u30b9\u30af\u306e\u30af\u30ea\u30a2\n  tty.c_cflag |= CS8; \/\/ 8\u30d3\u30c3\u30c8\u30c7\u30fc\u30bf\n  tty.c_cflag &amp;= ~CRTSCTS; \/\/ \u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u5236\u5fa1\u306a\u3057\n  tty.c_cflag |= CREAD | CLOCAL; \/\/ \u8aad\u307f\u53d6\u308a\u6709\u52b9\u5316|\u5236\u5fa1\u30e9\u30a4\u30f3\u3092\u7121\u8996\n  tty.c_iflag &amp;= ~(IXON | IXOFF | IXANY); \/\/ \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u5236\u5fa1\u7121\u52b9\u5316\n  tty.c_lflag &amp;= ~(ICANON | ECHO | ECHOE | ISIG); \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a\n  tty.c_oflag &amp;= ~OPOST; \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u8a2d\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">PARENB<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ parity bit\u7121\u52b9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">CSTOPB<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ stop bit\u30921\u3064\u306b\u8a2d\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">CSIZE<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u30c7\u30fc\u30bf\u30d3\u30c3\u30c8\u30de\u30b9\u30af\u306e\u30af\u30ea\u30a2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">|=<\/span><span style=\"color: #BABED8\"> CS8<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ 8\u30d3\u30c3\u30c8\u30c7\u30fc\u30bf<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">CRTSCTS<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u5236\u5fa1\u306a\u3057<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">|=<\/span><span style=\"color: #BABED8\"> CREAD <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> CLOCAL<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u8aad\u307f\u53d6\u308a\u6709\u52b9\u5316|\u5236\u5fa1\u30e9\u30a4\u30f3\u3092\u7121\u8996<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_iflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~(<\/span><span style=\"color: #BABED8\">IXON <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> IXOFF <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> IXANY<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u5236\u5fa1\u7121\u52b9\u5316<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_lflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~(<\/span><span style=\"color: #BABED8\">ICANON <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> ECHO <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> ECHOE <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> ISIG<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_oflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">OPOST<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u306e\u5404\u7a2e\u30d1\u30e9\u30e1\u30fc\u30bf\uff08\u30d1\u30ea\u30c6\u30a3\u3001\u30b9\u30c8\u30c3\u30d7\u30d3\u30c3\u30c8\u3001\u30c7\u30fc\u30bf\u30d3\u30c3\u30c8\u6570\u306a\u3069\uff09\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>cfsetispeed(&amp;tty, B19200);\ncfsetospeed(&amp;tty, B19200);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #82AAFF\">cfsetispeed<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> B19200<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #82AAFF\">cfsetospeed<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> B19200<\/span><span style=\"color: #89DDFF\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>VantagePro\u306e\u53c2\u8003\u30de\u30cb\u30e5\u30a2\u30eb\u304b\u3089\u3001\u30dc\u30fc\u30ec\u30fc\u30c8\u309219200\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>\u30b3\u30de\u30f3\u30c9\u9001\u4fe1<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>const char* cmd = \"LOOP 1\\n\";\nwrite(serial_port, cmd, strlen(cmd));<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C792EA\">const<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">char<\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\"> cmd <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">LOOP 1<\/span><span style=\"color: #BABED8\">\\n<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #82AAFF\">write<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> cmd<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">strlen<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">cmd<\/span><span style=\"color: #89DDFF\">));<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>&#8220;LOOP 1&#8243;\u30b3\u30de\u30f3\u30c9\u3092Vantage Pro2\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002\u203b\u3053\u306e\u30b3\u30de\u30f3\u30c9\u306f\u3001\u73fe\u5728\u306e\u6c17\u8c61\u30c7\u30fc\u30bf\u30921\u56de\u9001\u4fe1\u3059\u308b\u3088\u3046\u8981\u6c42\u3059\u308b\u3082\u306e\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong> \u30c7\u30fc\u30bf\u306e\u53d7\u4fe1<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>std::this_thread::sleep_for(std::chrono::seconds(1));\nunsigned char buf&#91;100&#93;;\nint bytes_read = read(serial_port, buf, sizeof(buf));<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #FFCB6B\">this_thread<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">sleep_for<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #FFCB6B\">chrono<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">seconds<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">char<\/span><span style=\"color: #BABED8\"> buf<\/span><span style=\"color: #89DDFF\">&#91;<\/span><span style=\"color: #F78C6C\">100<\/span><span style=\"color: #89DDFF\">&#93;;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> bytes_read <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">read<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> buf<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">sizeof(<\/span><span style=\"color: #BABED8\">buf<\/span><span style=\"color: #89DDFF\">));<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u30b3\u30de\u30f3\u30c9\u9001\u4fe1\u5f8c\u30011\u79d2\u5f85\u6a5f\u3057\u3066\u304b\u3089\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u53d6\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>\u30c7\u30fc\u30bf\u306e\u89e3\u6790\u3068\u4fdd\u5b58<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>std::ofstream ofs(\"data.txt\");\nstd::set&lt;int> condition = {5,7,9,12,16,41,44,46,48,50,52,54,56,58,60,87,91,93,97};\n\nfor(long unsigned int i = 0; i &lt; sizeof(buf)-1; i++){\n    if(condition.count(i) > 0){\n      unsigned int endian1 = (unsigned int)(*pbuf++);\n      unsigned int endian2 = (unsigned int)(*pbuf++)*16*16;        \n      ofs &lt;&lt; endian1 + endian2 &lt;&lt; std::endl;        \n      i++;        \n      continue;    \n      }    \n    ofs &lt;&lt; (unsigned int)*pbuf++ &lt;&lt; std::endl;\n  }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #FFCB6B\">ofstream<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">ofs<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">data.txt<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #BABED8\">set<\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #BABED8\"> condition <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><span style=\"color: #F78C6C\">5<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">7<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">9<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">12<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">16<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">41<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">44<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">46<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">48<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">50<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">52<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">54<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">56<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">58<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">60<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">87<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">91<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">93<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">97<\/span><span style=\"color: #89DDFF\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">for<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">long<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> i <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #BABED8\"> i <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">sizeof(<\/span><span style=\"color: #BABED8\">buf<\/span><span style=\"color: #89DDFF\">)-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #BABED8\"> i<\/span><span style=\"color: #89DDFF\">++){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">condition<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">count<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">i<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> endian1 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">)(*<\/span><span style=\"color: #F07178\">pbuf<\/span><span style=\"color: #89DDFF\">++);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> endian2 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">)(*<\/span><span style=\"color: #F07178\">pbuf<\/span><span style=\"color: #89DDFF\">++)*<\/span><span style=\"color: #F78C6C\">16<\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #F78C6C\">16<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #F07178\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      ofs <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> endian1 <\/span><span style=\"color: #89DDFF\">+<\/span><span style=\"color: #F07178\"> endian2 <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #F07178\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      i<\/span><span style=\"color: #89DDFF\">++;<\/span><span style=\"color: #F07178\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #89DDFF; font-style: italic\">continue<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #F07178\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #89DDFF\">}<\/span><span style=\"color: #F07178\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    ofs <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">)*<\/span><span style=\"color: #F07178\">pbuf<\/span><span style=\"color: #89DDFF\">++<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u53d7\u4fe1\u3057\u305f\u30c7\u30fc\u30bf\u3092\u89e3\u6790\u3057\u3001\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002<br>\u7279\u5b9a\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff08<code>condition<\/code>\u5185\uff09\u306e\u30c7\u30fc\u30bf\u306f2\u30d0\u30a4\u30c8\u3068\u3057\u3066\u6271\u3044\u3001\u305d\u308c\u4ee5\u5916\u306f1\u30d0\u30a4\u30c8\u3068\u3057\u3066\u6271\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>\u6ce8\u610f\u70b9\u3068\u6700\u9069\u5316<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/strong> <br>\u5404\u30b7\u30b9\u30c6\u30e0\u30b3\u30fc\u30eb\uff08<code>open<\/code>, <code>tcgetattr<\/code>, <code>write<\/code>, <code>read<\/code>\u306a\u3069\uff09\u306e\u5f8c\u306b\u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u5b9f\u969b\u306e\u904b\u7528\u3067\u306f\u3001\u3088\u308a\u8a73\u7d30\u306a\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3084\u30ed\u30b0\u51fa\u529b\u3092\u691c\u8a0e\u3059\u308b\u65b9\u304c\u3044\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u8a2d\u5b9a<\/strong>:<br>tty.c_cc[VTIME] = 10;\u3067\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u30921\u79d2\u306b\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u74b0\u5883\u306b\u3088\u3063\u3066\u306f\u8abf\u6574\u304c\u5fc5\u8981\u304b\u3082\u3057\u308c\u306a\u3044\u3067\u3059\u3002<\/li>\n\n\n\n<li> <strong>\u30c7\u30fc\u30bf\u89e3\u6790: <\/strong><br>\u73fe\u5728\u306e\u30b3\u30fc\u30c9\u306f\u56fa\u5b9a\u9577\u306e\u30c7\u30fc\u30bf\u3092\u60f3\u5b9a\u3057\u3066\u3044\u307e\u3059\u304c\u3001Vantage Pro2\u306e\u51fa\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306b\u5909\u66f4\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u3088\u308a\u67d4\u8edf\u306a\u89e3\u6790\u65b9\u6cd5\u3092\u691c\u8a0e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li> <strong>\u7d99\u7d9a\u7684\u306a\u30c7\u30fc\u30bf\u53d6\u5f97<\/strong>: <br>\u73fe\u5728\u306e\u30b3\u30fc\u30c9\u306f1\u56de\u306e\u30c7\u30fc\u30bf\u53d6\u5f97\u306e\u307f\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002\u5b9f\u969b\u306e\u6c17\u8c61\u89b3\u6e2c\u3067\u306f\u5b9a\u671f\u7684\u306a\u30c7\u30fc\u30bf\u53d6\u5f97\u304c\u5fc5\u8981\u3067\u3059\u306e\u3067\u3001\u3053\u306e\u30b3\u30fc\u30c9\u3092crontab\u3067\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u30fc\u3067\u5b9f\u884c\u3055\u305b\u308b\u304b\u3001<code>while<\/code>\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3057\u3066\u7d99\u7d9a\u7684\u306b\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u5b9f\u88c5\u3092\u691c\u8a0e\u3057\u3066\u3082\u3044\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p> \u30b3\u30fc\u30c9\u5168\u4f53\u306f\u4ee5\u4e0b\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#babed8;--cbp-line-number-width:calc(3 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ ccserial.cc\n#include &lt;iostream>\n#include &lt;fstream>\n#include &lt;cstring>\n#include &lt;ctime>\n#include &lt;chrono>\n#include &lt;iomanip>\n#include &lt;set>\n#include &lt;thread>\n\n\n#include &lt;fcntl.h>\n#include &lt;unistd.h>\n#include &lt;termios.h>\n\nint main() {\n  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3092\u958b\u304f\n  int serial_port = open(\"\/dev\/ttyUSB0\", O_RDWR);\n  if (serial_port == -1) {\n    std::cerr &lt;&lt; \"\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\" &lt;&lt; std::endl;\n    return 1;\n  }\n\n  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u306e\u8a2d\u5b9a\u3092\u53d6\u5f97\n  struct termios tty;\n  memset(&amp;tty, 0, sizeof(tty));\n  if (tcgetattr(serial_port, &amp;tty) != 0) {\n    std::cerr &lt;&lt; \"tcgetattr\u306b\u5931\u6557\u3057\u307e\u3057\u305f\" &lt;&lt; std::endl;\n    return 1;\n  }\n\n  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u8a2d\u5b9a\n  tty.c_cflag &amp;= ~PARENB; \/\/ parity bit\u7121\u52b9\n  tty.c_cflag &amp;= ~CSTOPB; \/\/ stop bit\u30921\u3064\u306b\u8a2d\u5b9a\n  tty.c_cflag &amp;= ~CSIZE; \/\/ \u30c7\u30fc\u30bf\u30d3\u30c3\u30c8\u30de\u30b9\u30af\u306e\u30af\u30ea\u30a2\n  tty.c_cflag |= CS8; \/\/ 8\u30d3\u30c3\u30c8\u30c7\u30fc\u30bf\n  tty.c_cflag &amp;= ~CRTSCTS; \/\/ \u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u5236\u5fa1\u306a\u3057\n  tty.c_cflag |= CREAD | CLOCAL; \/\/ \u8aad\u307f\u53d6\u308a\u6709\u52b9\u5316|\u5236\u5fa1\u30e9\u30a4\u30f3\u3092\u7121\u8996\n  tty.c_iflag &amp;= ~(IXON | IXOFF | IXANY); \/\/ \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u5236\u5fa1\u7121\u52b9\u5316\n  tty.c_lflag &amp;= ~(ICANON | ECHO | ECHOE | ISIG); \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a\n  tty.c_oflag &amp;= ~OPOST; \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a\n\n  tty.c_cc&#91;VMIN&#93; = 0; \/\/ \u6700\u5c0f\u8aad\u307f\u53d6\u308a\u6587\u5b57\u6570\n  tty.c_cc&#91;VTIME&#93; = 10; \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u79d2\u6570 (1\/10\u79d2)\n    \n  cfsetispeed(&amp;tty, B19200); \/\/ \u5165\u529bbaudrate\n  cfsetospeed(&amp;tty, B19200); \/\/ \u51fa\u529bbaudrate\n\n  if (tcsetattr(serial_port, TCSANOW, &amp;tty) != 0) {\n    std::cerr &lt;&lt; \"tcsetattr\u306b\u5931\u6557\u3057\u307e\u3057\u305f\" &lt;&lt; std::endl;\n    return 1;\n  }\n\n  const char* cmd = \"LOOP 1\\n\";\n  if (write(serial_port, cmd, strlen(cmd)) == -1) {\n    std::cerr &lt;&lt; \"\u30b3\u30de\u30f3\u30c9\u306e\u66f8\u304d\u8fbc\u307f\u5931\u6557\u3057\u307e\u3057\u305f\" &lt;&lt; std::endl;\n    return 1;\n  }\n\n  std::this_thread::sleep_for(std::chrono::seconds(1)); \/\/ Wait for response\n\n  unsigned char buf&#91;100&#93;;\n\n  unsigned char *pbuf;\n  pbuf = &amp;buf&#91;1&#93;;\n\n  int bytes_read = read(serial_port, buf, sizeof(buf));\n  if (bytes_read == -1) {\n    std::cerr &lt;&lt; \"\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\" &lt;&lt; std::endl;\n    return 1;\n  }\n\n  \/\/ \u30d5\u30a1\u30a4\u30eb\u51fa\u529b\n  std::ofstream ofs(\"data.txt\");\n  if (!ofs.is_open()) {\n      std::cerr &lt;&lt; \"ofs\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\" &lt;&lt; std::endl;\n      return 1;\n  }\n  \n  std::set&lt;int> condition = {5,7,9,12,16,41,44,46,48,50,52,54,56,58,60,87,91,93,97};\n\n  for(long unsigned int i = 0; i &lt; sizeof(buf)-1; i++){\n    if(condition.count(i) > 0){\n      unsigned int endian1 = (unsigned int)(*pbuf++);\n      unsigned int endian2 = (unsigned int)(*pbuf++)*16*16;\n      ofs &lt;&lt; endian1 + endian2 &lt;&lt; std::endl;\n      i++;\n      continue;\n    }\n    \/\/ 1bytes \u30c7\u30fc\u30bf\u306e\u51fa\u529b\n    ofs &lt;&lt; (unsigned int)*pbuf++ &lt;&lt; std::endl;\n  }\n\n  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3092\u9589\u3058\u308b\n  close(serial_port);\n\n  ofs.close();\n\n  return 0;\n}\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">\/\/ ccserial.cc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">iostream<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">fstream<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">cstring<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">ctime<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">chrono<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">iomanip<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">set<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">thread<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">fcntl.h<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">unistd.h<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF; font-style: italic\">#include<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C3E88D\">termios.h<\/span><span style=\"color: #89DDFF\">&gt;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">main<\/span><span style=\"color: #89DDFF\">()<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3092\u958b\u304f<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> serial_port <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">open<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\/dev\/ttyUSB0<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> O_RDWR<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">cerr <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u306e\u8a2d\u5b9a\u3092\u53d6\u5f97<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #C792EA\">struct<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #FFCB6B\">termios<\/span><span style=\"color: #BABED8\"> tty<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #82AAFF\">memset<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">sizeof(<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #82AAFF\">tcgetattr<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">!=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">cerr <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">tcgetattr\u306b\u5931\u6557\u3057\u307e\u3057\u305f<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u8a2d\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">PARENB<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ parity bit\u7121\u52b9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">CSTOPB<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ stop bit\u30921\u3064\u306b\u8a2d\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">CSIZE<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u30c7\u30fc\u30bf\u30d3\u30c3\u30c8\u30de\u30b9\u30af\u306e\u30af\u30ea\u30a2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">|=<\/span><span style=\"color: #BABED8\"> CS8<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ 8\u30d3\u30c3\u30c8\u30c7\u30fc\u30bf<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">CRTSCTS<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u5236\u5fa1\u306a\u3057<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cflag <\/span><span style=\"color: #89DDFF\">|=<\/span><span style=\"color: #BABED8\"> CREAD <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> CLOCAL<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u8aad\u307f\u53d6\u308a\u6709\u52b9\u5316|\u5236\u5fa1\u30e9\u30a4\u30f3\u3092\u7121\u8996<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_iflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~(<\/span><span style=\"color: #BABED8\">IXON <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> IXOFF <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> IXANY<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u5236\u5fa1\u7121\u52b9\u5316<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_lflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~(<\/span><span style=\"color: #BABED8\">ICANON <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> ECHO <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> ECHOE <\/span><span style=\"color: #89DDFF\">|<\/span><span style=\"color: #BABED8\"> ISIG<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_oflag <\/span><span style=\"color: #89DDFF\">&amp;=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">~<\/span><span style=\"color: #BABED8\">OPOST<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u751f\u30c7\u30fc\u30bf\u8a2d\u5b9a<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cc<\/span><span style=\"color: #89DDFF\">&#91;<\/span><span style=\"color: #BABED8\">VMIN<\/span><span style=\"color: #89DDFF\">&#93;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u6700\u5c0f\u8aad\u307f\u53d6\u308a\u6587\u5b57\u6570<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  tty<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #BABED8\">c_cc<\/span><span style=\"color: #89DDFF\">&#91;<\/span><span style=\"color: #BABED8\">VTIME<\/span><span style=\"color: #89DDFF\">&#93;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">10<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u79d2\u6570 (1\/10\u79d2)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #82AAFF\">cfsetispeed<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> B19200<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u5165\u529bbaudrate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #82AAFF\">cfsetospeed<\/span><span style=\"color: #89DDFF\">(&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> B19200<\/span><span style=\"color: #89DDFF\">);<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ \u51fa\u529bbaudrate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #82AAFF\">tcsetattr<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> TCSANOW<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #BABED8\">tty<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">!=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">cerr <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">tcsetattr\u306b\u5931\u6557\u3057\u307e\u3057\u305f<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #C792EA\">const<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">char<\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\"> cmd <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">LOOP 1<\/span><span style=\"color: #BABED8\">\\n<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #82AAFF\">write<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> cmd<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">strlen<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">cmd<\/span><span style=\"color: #89DDFF\">))<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">cerr <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u30b3\u30de\u30f3\u30c9\u306e\u66f8\u304d\u8fbc\u307f\u5931\u6557\u3057\u307e\u3057\u305f<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #FFCB6B\">this_thread<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">sleep_for<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #FFCB6B\">chrono<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #82AAFF\">seconds<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">));<\/span><span style=\"color: #464B5D; font-style: italic\"> \/\/ Wait for response<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">char<\/span><span style=\"color: #BABED8\"> buf<\/span><span style=\"color: #89DDFF\">&#91;<\/span><span style=\"color: #F78C6C\">100<\/span><span style=\"color: #89DDFF\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">char<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #BABED8\">pbuf<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  pbuf <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">&amp;<\/span><span style=\"color: #BABED8\">buf<\/span><span style=\"color: #89DDFF\">&#91;<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">&#93;;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> bytes_read <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #82AAFF\">read<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> buf<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">sizeof(<\/span><span style=\"color: #BABED8\">buf<\/span><span style=\"color: #89DDFF\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">bytes_read <\/span><span style=\"color: #89DDFF\">==<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">cerr <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">  \/\/ \u30d5\u30a1\u30a4\u30eb\u51fa\u529b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #BABED8\">ofstream <\/span><span style=\"color: #82AAFF\">ofs<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">data.txt<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">(!<\/span><span style=\"color: #BABED8\">ofs<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">is_open<\/span><span style=\"color: #89DDFF\">())<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">cerr <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">ofs\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #BABED8\">set<\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #BABED8\"> condition <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">{<\/span><span style=\"color: #F78C6C\">5<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">7<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">9<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">12<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">16<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">41<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">44<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">46<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">48<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">50<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">52<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">54<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">56<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">58<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">60<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">87<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">91<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">93<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #F78C6C\">97<\/span><span style=\"color: #89DDFF\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">for<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">long<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #BABED8\"> i <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #BABED8\"> i <\/span><span style=\"color: #89DDFF\">&lt;<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #89DDFF\">sizeof(<\/span><span style=\"color: #BABED8\">buf<\/span><span style=\"color: #89DDFF\">)-<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">;<\/span><span style=\"color: #BABED8\"> i<\/span><span style=\"color: #89DDFF\">++){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">condition<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">count<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #F07178\">i<\/span><span style=\"color: #89DDFF\">)<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&gt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> endian1 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">)(*<\/span><span style=\"color: #F07178\">pbuf<\/span><span style=\"color: #89DDFF\">++);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #F07178\"> endian2 <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">)(*<\/span><span style=\"color: #F07178\">pbuf<\/span><span style=\"color: #89DDFF\">++)*<\/span><span style=\"color: #F78C6C\">16<\/span><span style=\"color: #89DDFF\">*<\/span><span style=\"color: #F78C6C\">16<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      ofs <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> endian1 <\/span><span style=\"color: #89DDFF\">+<\/span><span style=\"color: #F07178\"> endian2 <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      i<\/span><span style=\"color: #89DDFF\">++;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">      <\/span><span style=\"color: #89DDFF; font-style: italic\">continue<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">    \/\/ 1bytes \u30c7\u30fc\u30bf\u306e\u51fa\u529b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">    ofs <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #C792EA\">unsigned<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #C792EA\">int<\/span><span style=\"color: #89DDFF\">)*<\/span><span style=\"color: #F07178\">pbuf<\/span><span style=\"color: #89DDFF\">++<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #89DDFF\">&lt;&lt;<\/span><span style=\"color: #F07178\"> <\/span><span style=\"color: #FFCB6B\">std<\/span><span style=\"color: #89DDFF\">::<\/span><span style=\"color: #F07178\">endl<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F07178\">  <\/span><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">  \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u3092\u9589\u3058\u308b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #82AAFF\">close<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #BABED8\">serial_port<\/span><span style=\"color: #89DDFF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  ofs<\/span><span style=\"color: #89DDFF\">.<\/span><span style=\"color: #82AAFF\">close<\/span><span style=\"color: #89DDFF\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #BABED8\">  <\/span><span style=\"color: #89DDFF; font-style: italic\">return<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">0<\/span><span style=\"color: #89DDFF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\"><strong>\u307e\u3068\u3081<\/strong><\/h2>\n\n\n\n<p>Davis Vantage Pro2\u3068Armadillo G3\u3092\u7528\u3044\u305f\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u306e\u5b9f\u88c5\u306b\u3064\u3044\u3066\u3001\u57fa\u672c\u7684\u306a\u30b3\u30fc\u30c9\u3068\u5171\u306b\u89e3\u8aac\u3057\u307e\u3057\u305f\u3002<br>\u3053\u306e\u5b9f\u88c5\u3092\u57fa\u790e\u3068\u3059\u308c\u3070\u6c17\u8c61\u89b3\u6e2c\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9\u304c\u53ef\u80fd\u3060\u3068\u601d\u3044\u307e\u3059\u3002\u5b9f\u969b\u306e\u904b\u7528\u306b\u5f53\u305f\u3063\u3066\u306f\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3001\u5b89\u5b9a\u6027\u3001\u62e1\u5f35\u6027\u306a\u3069\u3092\u8003\u616e\u3057\u3001\u7d99\u7d9a\u7684\u306a\u6539\u5584\u3092\u884c\u3063\u3066\u3044\u304f\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Implementing Serial Communication between Davis Vantage Pro2 Plus and Armadillo \u6c17\u8c61\u89b3\u6e2c\u6a5f\u5668\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308bDavis Vantage Pr [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":78,"comment_status":"open","ping_status":"open","sticky":false,"template":"single-sidebar","format":"standard","meta":{"cybocfi_hide_featured_image":"yes","footnotes":""},"categories":[13],"tags":[15,14,17,16],"class_list":["post-42","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","tag-armadillo","tag-c","tag-serial","tag-vantagepro2"],"_links":{"self":[{"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":7,"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"predecessor-version":[{"id":1884,"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/posts\/42\/revisions\/1884"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/media\/78"}],"wp:attachment":[{"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bokumin.org\/blog\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}