{"id":6395,"date":"2024-01-10T20:49:58","date_gmt":"2024-01-10T11:49:58","guid":{"rendered":"https:\/\/kats-eye.net\/info\/?p=6395"},"modified":"2024-01-10T23:59:21","modified_gmt":"2024-01-10T14:59:21","slug":"utr-s201","status":"publish","type":"post","link":"https:\/\/kats-eye.net\/info\/2024\/01\/10\/utr-s201\/","title":{"rendered":"\u3068\u3042\u308b\u30c7\u30d0\u30a4\u30b9\u3092\u4f7f\u3046\uff08\u305d\u306e\uff11\uff09"},"content":{"rendered":"\n<h2>\u6982\u8981<\/h2>\n\n\n\n<p>\u3000\u3057\u3070\u3089\u304f\u691c\u8a0e\u51fa\u6765\u306a\u304f\u306a\u308a\u307e\u3059\u306e\u3067\u3001\u9014\u4e2d\u3067\u3059\u304c\u72b6\u6cc1\u3092\u6295\u7a3f\u3057\u3066\u304a\u304d\u307e\u3059\u3002\u5c11\u3057\u6642\u9593\u304c\u7d4c\u3064\u3068\u3001\u4f55\u304c\u3069\u3053\u306b\u3042\u308b\u304b\u3082\u3059\u3063\u304b\u308a\u5fd8\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u306e\u3067\u3001\u3068\u308a\u3042\u3048\u305a\u81ea\u5206\u7528\u306e\u624b\u304c\u304b\u308a\u3068\u3057\u3066\u6b8b\u3057\u3066\u304a\u304d\u307e\u3059\u3002<br>\u3000\u4e0b\u306e\u56f3\u306fRS232C\u901a\u4fe1\u3067\u3068\u3042\u308b\u30c7\u30d0\u30a4\u30b9\u3092\u4f7f\u3063\u3066\u3001\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3066\u3044\u308b\u30d5\u30a9\u30fc\u30e0\uff08C#\uff09\u72b6\u614b\u3067\u3059\u3002\u6b63\u78ba\u306b\u53d7\u4fe1\u3067\u304d\u3066\u3044\u306a\u3044\u30b1\u30fc\u30b9\u3082\u3042\u308a\u307e\u3059\u304c\u3001\u3044\u3064\u304b\u4fee\u6b63\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<br>\u3000\u5f8c\u534a\u306b\u306fARDUINO\u3067\u306e\u53d6\u5f97\u4f8b\u306b\u3064\u3044\u3066\u8a18\u8f09\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/001-3.png\" alt=\"\" class=\"wp-image-6397\" width=\"400\" height=\"382\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/001-3.png 526w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/001-3-300x287.png 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/figure><\/div>\n\n\n\n<h2>\u30d7\u30ed\u30b0\u30e9\u30e0\uff08C#\uff09<\/h2>\n\n\n\n<p>\u3000\u672a\u6765\u306e\u81ea\u5206\u306e\u70ba\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u6b8b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-csharp\" data-file=\"UTR-S201_COM_TEST01\" data-lang=\"C#\"><code>using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.IO.Ports;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\n\nnamespace UTR_S201_COM_TEST01\n{\n    public partial class Form1 : Form\n    {\n        string[] ports;\n        public string strReceive;\n\n        public Form1()\n        {\n            InitializeComponent();\n        }\n\n        private void Form1_Load(object sender, EventArgs e) {\n            ports = SerialPort.GetPortNames();\n\n            for (int ii = 0; ii &lt; ports.GetLength(0); ii++) {\n                comboBox1.Items.Add(ports[ii]);\n            }\n\n            comboBox1.SelectedIndex = ports.GetLength(0) - 1;\n\n            if (serialPort1.IsOpen) { serialPort1.Close(); }\n\n            button2.BackColor = Color.Silver;\n        }\n\n        \/\/ COM\uff8e\uff9f\uff70\uff84\u958b\u304f\n        private void button2_Click(object sender, EventArgs e) {\n            string p_name = comboBox1.Text.Trim();\n            com_open(p_name);\n        }\n\n        \/\/com_open\n        private void com_open(string p_name) {\n            if (serialPort1.IsOpen) {\n                serialPort1.Close();\n                button2.BackColor = Color.Silver;\n                return;\n            }\n\n            serialPort1.PortName = p_name;\n            serialPort1.BaudRate = 115200;     \/\/, \/\/\u5909\u8abf\u56de\u6570(1\u79d2\u3042\u305f\u308a)\n            serialPort1.Parity = Parity.None;\n            serialPort1.DataBits = 8;           \/\/ 1\u5909\u8abf\u3042\u305f\u308a\u306ebit\u6570\n            serialPort1.StopBits = StopBits.One;\n            serialPort1.NewLine = &quot;\\r&quot;;\n            serialPort1.ReadTimeout = 1000;\n            serialPort1.WriteTimeout = 1000;\n            \/\/serialPort1.Handshake = Handshake.None;\n            \/\/serialPort1.DtrEnable = false;\n            \/\/serialPort1.RtsEnable = false;\n\n\n            \/\/serialPort1.DataReceived += serialPort_DataReceived;\u3000\u3000\/\/ \u30c7\u30fc\u30bf\u53d7\u4fe1\u30a4\u30d9\u30f3\u30c8\n\n            serialPort1.Open();\n\n            button2.BackColor = Color.Yellow;\n\n        }\n\n        \/\/ \u30d5\u30a9\u30fc\u30e0\u9589\u3058\u308b\n        private void Form1_FormClosing(object sender, FormClosingEventArgs e) {\n            if (serialPort1.IsOpen) { serialPort1.Close(); }\n        }\n\n        \/\/ \u30c7\u30fc\u30bf\u9001\u4fe1\u30dc\u30bf\u30f3\n        private void button1_Click(object sender, EventArgs e)\n        {\n            if (!serialPort1.IsOpen) {\n                MessageBox.Show(&quot;\u30dd\u30fc\u30c8\u304c\u9589\u3058\u3066\u3044\u307e\u3059\u3002&quot;, &quot;\u30dd\u30fc\u30c8\u9589&quot;);\n                return;\n            }\n\n            int cmd_n = int.Parse(textBox2.Text.Trim());\n            SerialPort_DataSend(cmd_n);\n\n            cmd_n ++ ;\n            if (cmd_n &gt; 5) { \n                cmd_n = 0;\n            }\n\n            this.textBox2.Text = cmd_n.ToString();\n        }\n\n        \/\/ \u30c7\u30fc\u30bf\u9001\u4fe1\n        private void SerialPort_DataSend(int cmd_no) {\n            byte[] s_Data = std.S201_CMD[cmd_no];\n\n            int byt_l = s_Data.Length;\n            int chk_e = s_Data[byt_l - 1];\n            int cmd_sum = 0;\n\n            if (chk_e != 3) { return; }\n\n            byte[] tr_dt = new byte[byt_l + 2];\n\n            for (int ii = 0; ii &lt; byt_l; ii++) {\n                tr_dt[ii] = s_Data[ii];\n                cmd_sum += s_Data[ii];\n            }\n\n            tr_dt[byt_l] = (byte)(0xFF & cmd_sum);\n            tr_dt[byt_l + 1] = 0x0d;\n\n            serialPort1.Write(tr_dt, 0, byt_l + 2);\n        }\n\n        \/\/ \u25a0\u25a0\u25a0\u3000\u53c2\u8003\uff11\u306b\u3088\u308b\u30c7\u30fc\u30bf\u53d7\u4fe1\u3000\u25a0\u25a0\u25a0\n        \/\/ \u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8 \u30c7\u30fc\u30bf\u53d7\u4fe1\u30a4\u30d9\u30f3\u30c8\n        \/\/ [ com_open ] \u5185\u3067\u5b9a\u7fa9\u5fc5\u8981\u3000\u2192\u3000serialPort1.DataReceived += serialPort_DataReceived;\n        private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e){\n\n            SerialPort seriPort = (SerialPort)sender;\n\n            int readByteS = seriPort.BytesToRead;           \/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\u9577\u53d6\u5f97\n\n            if (readByteS &gt; 0) {\n                byte[] buff = new byte[readByteS];\n                seriPort.Read(buff,0,readByteS);\n\n                strReceive = &quot;&quot;;\n\n                for (int i = 0; i &lt; buff.Length; i++) { \n                    strReceive += string.Format(&quot;{0:X2}&quot;, buff[i]) ;\n                    strReceive += &quot; &quot; ;\n                }\n\n                strReceive = strReceive.Trim() ;\n                serialPort1.DiscardInBuffer();              \/\/ \u5165\u529b\u30d0\u30c3\u30d5\u30a1\u30fc\u30af\u30ea\u30a2\n\n                if (this.InvokeRequired) {\n                    this.Invoke(new Action(this.UpdateText));\n                } else {\n                    this.textBox1.Text += strReceive + Environment.NewLine;\n                }\n            }\n        }\n\n        \/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\u8868\u793a\n        private void UpdateText() {\n            textBox1.AppendText(strReceive);\n\n            string l_str = strReceive.Substring(strReceive.Length - 2);\n            if (l_str == &quot;0D&quot;) { textBox1.AppendText(Environment.NewLine); }\n        }\n\n        \/\/ \u25a0\u25a0\u25a0\u3000\u53c2\u8003\uff12\u306b\u3088\u308b\u30c7\u30fc\u30bf\u53d7\u4fe1\u3000\u25a0\u25a0\u25a0\n        private delegate void Delegate_RcvDataToTextBox(string data); \n\n        \/\/ \u30c7\u30fc\u30bf\u53d7\u4fe1\u30a4\u30d9\u30f3\u30c8\n        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)\n        {\n            SerialPort seriPort = (SerialPort)sender;\n\n            int readByteS = seriPort.BytesToRead;           \/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\u9577\u53d6\u5f97\n\n            if (readByteS &gt; 0)\n            {\n                byte[] buff = new byte[readByteS];\n                seriPort.Read(buff, 0, readByteS);\n\n                strReceive = &quot;&quot;;\n\n                for (int i = 0; i &lt; buff.Length; i++)\n                {\n                    strReceive += string.Format(&quot;{0:X2}&quot;, buff[i]);\n                    strReceive += &quot; &quot;;\n                }\n\n                string data = strReceive.Trim();\n                \/\/serialPort1.DiscardInBuffer();              \/\/ \u5165\u529b\u30d0\u30c3\u30d5\u30a1\u30fc\u30af\u30ea\u30a2\n\n                if (this.InvokeRequired){\n                    Invoke(new Delegate_RcvDataToTextBox(RcvDataToTextBox), new Object[] { data });\n                }\u3000else\u3000{\n                    this.textBox1.Text += strReceive + Environment.NewLine;\n                }\n            }\n        }\n\n        \/\/\u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306b\u8a2d\u5b9a\u3059\u308b\n        private void RcvDataToTextBox(string data) {\n            if (data != null) {\n                string d_trim = data.Trim();\n                string l_str = d_trim.Substring(d_trim.Length - 2);\n\n                if (l_str == &quot;0D&quot;){\n                    textBox1.AppendText(d_trim);\n                    textBox1.AppendText(Environment.NewLine);\n                } else {\n                    textBox1.AppendText(data);\n                }\n            }\n        }\n\n    }\n}\n\n\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace UTR_S201_COM_TEST01\n{\n    public static class std\n    {\n        public static byte[][] S201_CMD = new byte[][] {\n            new byte[]{ 0x02, 0x00, 0x4F, 0x01, 0x00, 0x03 } ,                                                              \n            new byte[]{ 0x02, 0x00, 0x4F, 0x01, 0x90, 0x03 } ,                                                              \n            new byte[]{ 0x02, 0x00, 0x4E, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03 } ,                          \n            new byte[]{ 0x02, 0x00, 0x55, 0x02, 0x41, 0x01, 0x03 } ,                                                        \n            new byte[]{ 0x02, 0x00, 0x55, 0x0B, 0x31, 0x01, 0x1F, 0xCE, 0x81, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03 } ,  \n            new byte[]{ 0x02, 0x00, 0x4E, 0x07, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03 } ,                          \n            new byte[]{ 0x02, 0x00, 0x4E, 0x07, 0x00, 0x65, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03 }                            \n    }\n}\n<\/code><\/pre><\/div>\n\n\n\n<h2>ARDUINO\u53d7\u4fe1\u4f8b<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/100.jpg\" alt=\"\" class=\"wp-image-6403\" width=\"432\" height=\"511\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/100.jpg 671w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/100-254x300.jpg 254w\" sizes=\"(max-width: 432px) 100vw, 432px\" \/><\/figure><\/div>\n\n\n\n<h2>\u914d\u7dda\u63a5\u7d9a<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" src=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/002.png\" alt=\"\" class=\"wp-image-6407\" width=\"474\" height=\"101\" srcset=\"https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/002.png 789w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/002-300x64.png 300w, https:\/\/kats-eye.net\/info\/wp-content\/uploads\/2024\/01\/002-768x165.png 768w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/figure><\/div>\n\n\n\n<h2>ARDUINO\u30d7\u30ed\u30b0\u30e9\u30e0<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-c\" data-file=\"20240110_UTR-S201-TEST.ino\" data-lang=\"C\"><code>#include &lt;SoftwareSerial.h&gt;\nSoftwareSerial mySerial(2, 3);          \/\/ RX,TX\u306e\u5272\u308a\u5f53\u3066\n\n\/\/ \u8a2d\u5b9a\uff7a\uff8f\uff9d\uff84\uff9e\nuint8_t CMD[6][18]={\n      { 0x02,0x00,0x4F,0x01,0x00,0x03,0x55,0x0D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF },\n      { 0x02,0x00,0x4F,0x01,0x90,0x03,0xE5,0x0D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF } ,\n      { 0x02,0x00,0x4E,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x5A,0x0D,0xFF,0xFF,0xFF,0xFF } ,\n      { 0x02,0x00,0x55,0x02,0x41,0x01,0x03,0x9E,0x0D,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF } ,\n      { 0x02,0x00,0x55,0x0B,0x31,0x01,0x1F,0xCE,0x81,0x02,0x00,0x00,0x00,0x00,0x02,0x03,0x09,0x0D } ,\n      { 0x02,0x00,0x4E,0x07,0x00,0x65,0x00,0x00,0x00,0x00,0x00,0x03,0xBF,0x0D,0xFF,0xFF,0xFF,0xFF } ,      \n  };\n     \n\/\/ \u521d\u671f\u8a2d\u5b9a\nvoid setup() {\n  Serial.begin(115200);                    \/\/ \u30b7\u30ea\u30a2\u30eb\u30e2\u30cb\u30bf\u51fa\u529b\n  mySerial.begin(115200);                   \/\/ \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u958b\u59cb\n\n  int cn_fct = sizeof(CMD[0]) ;\n  int cn_cmd = sizeof(CMD) \/ cn_fct ;\n\n  uint8_t buf_tmp[ cn_fct ] ;\n\n  for(int i = 0 ; i &lt; cn_cmd ; ++i ){\n    for(int j = 0 ; j &lt; cn_fct ; ++j ){ buf_tmp[j] = CMD[i][j];}\n \n    \/\/ \uff7a\uff8f\uff9d\uff84\uff9e\u9001\u4fe1\n    send_cmd_S201( buf_tmp , cn_fct );\n    delay(1);\n  \n    \/\/ \uff83\uff9e\uff70\uff80\u53d7\u4fe1\n    String rcvDat=&quot;&quot;; \n    while(mySerial.available() &gt; 0){\n      int val = mySerial.read() ;\n      String str = &quot;00&quot; + String(val , HEX);\n      str = str.substring(str.length() - 2) + &quot; &quot; ;\n      rcvDat += str;\n\n      if(val==13){\n        Serial.println(rcvDat);\n        break;\n      }\n    }\n    \/\/if(i&gt;=1){ break; }\n    delay(300);\n  }\n  Serial.println(&quot;&quot;);\n  Serial.println(&quot;START!&quot;);\n}\n\n\/\/ \u25a0\u30e1\u30a4\u30f3\u51e6\u7406\u25a0\nvoid loop() {\n  \/\/ \uff83\uff9e\uff70\uff80\u53d7\u4fe1\n  String rcvDat=&quot;&quot;;\n  uint8_t rBuf[26];\n  int rcv_cn = 0;\n  int sum_ck = 0;\n  \n  while(mySerial.available() &gt; 0){\n    int val = mySerial.read() ;\n    if(rcv_cn &lt; 26){ rBuf[rcv_cn] = val; }\n    if(rcv_cn &lt; 24){ sum_ck += val; }\n      \n    String str = &quot;00&quot; + String(val , HEX);\n    str = str.substring(str.length() - 2) + &quot; &quot; ;\n    rcvDat += str;\n    rcv_cn++;\n\n    if(val==13){\n      if(rcv_cn == 26){\n        sum_ck = sum_ck & 0xFF ;\n        if(rBuf[0]==2 && rBuf[23]==3 && rBuf[24]==sum_ck){\n          Serial.println(rcvDat);\n        }\n      }\n      break;\n    }\n  }\n}\n\n\n\/\/ \uff83\uff9e\uff70\uff80\u9001\u4fe1\nvoid send_cmd_S201(uint8_t * buf , int sz_bf){\n   for(int i = 0 ; i &lt; sz_bf ; ++i ){\n    String str = &quot;00&quot; + String(buf[i] , HEX);\n    str = str.substring(str.length() - 2) ;\n    Serial.print(str);\n    Serial.print(&quot; &quot;);\n    mySerial.write(buf[i]);\n    if(buf[i]==0x0D || buf[i]==0xFF){ break; }\n  }\n  Serial.println(&quot;&quot;);\n  delay(100);\n}<\/code><\/pre><\/div>\n\n\n\n<h2>\u307e\u3068\u3081<\/h2>\n\n\n\n<p>\u3000\u3044\u3064\u304b\u81ea\u5206\u306e\u5f79\u306b\u7acb\u3064\u3053\u3068\u3092\u9858\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981 \u3000\u3057\u3070\u3089\u304f\u691c\u8a0e\u51fa\u6765\u306a\u304f\u306a\u308a\u307e\u3059\u306e\u3067\u3001\u9014\u4e2d\u3067\u3059\u304c\u72b6\u6cc1\u3092\u6295\u7a3f\u3057\u3066\u304a\u304d\u307e\u3059\u3002\u5c11\u3057\u6642\u9593\u304c\u7d4c\u3064\u3068\u3001\u4f55\u304c\u3069\u3053\u306b\u3042\u308b\u304b\u3082\u3059\u3063\u304b\u308a\u5fd8\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u306e\u3067\u3001\u3068\u308a\u3042\u3048\u305a\u81ea\u5206\u7528\u306e\u624b\u304c\u304b\u308a\u3068\u3057\u3066\u6b8b\u3057\u3066\u304a\u304d\u307e\u3059\u3002\u3000\u4e0b\u306e\u56f3\u306fRS232C\u901a\u4fe1\u3067\u3068 &hellip; <a href=\"https:\/\/kats-eye.net\/info\/2024\/01\/10\/utr-s201\/\" class=\"more-link\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"screen-reader-text\">\u3068\u3042\u308b\u30c7\u30d0\u30a4\u30b9\u3092\u4f7f\u3046\uff08\u305d\u306e\uff11\uff09<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":6399,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[100],"_links":{"self":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/6395"}],"collection":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/comments?post=6395"}],"version-history":[{"count":6,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/6395\/revisions"}],"predecessor-version":[{"id":6409,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/posts\/6395\/revisions\/6409"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/media\/6399"}],"wp:attachment":[{"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/media?parent=6395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/categories?post=6395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kats-eye.net\/info\/wp-json\/wp\/v2\/tags?post=6395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}