{"id":3781,"date":"2020-10-21T12:40:53","date_gmt":"2020-10-21T03:40:53","guid":{"rendered":"https:\/\/tesbit.co.jp\/?p=3781"},"modified":"2020-10-21T12:40:54","modified_gmt":"2020-10-21T03:40:54","slug":"%e3%82%b5%e3%83%b3%e3%83%97%e3%83%ab%e3%82%b3%e3%83%bc%e3%83%89-2","status":"publish","type":"post","link":"https:\/\/tesbit.co.jp\/?p=3781","title":{"rendered":"Python\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9"},"content":{"rendered":"\n<p>\u63d0\u4f9b\u3057\u3066\u3044\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n\n\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\n#\n#    Copyright (C)2020 TESBIT co.,ltd. All rights reserved.\n#    \n\nimport tkinter as tk\nimport serial\nimport threading\nimport time\nfrom tkinter import messagebox\n\n\n#\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570========================================================\ncomf_conn = 0 # \u63a5\u7d9a\u7ba1\u7406\u30d5\u30e9\u30b0\ncomf_disconn = 0 # \u5207\u65ad\u7ba1\u7406\u30d5\u30e9\u30b0\ntf = 1 # \u30b9\u30ec\u30c3\u30c9\u30d5\u30e9\u30b0(Thread Flag)\n\ncomf_init = 0 # \u521d\u671f\u5316\u7ba1\u7406\u30d5\u30e9\u30b0\ncomf_read_a = 0 # read_a\u7ba1\u7406\u30d5\u30e9\u30b0\n\ncomf_move_z = 0 # \u30ba\u30fc\u30e0\u79fb\u52d5\u7ba1\u7406\u30d5\u30e9\u30b0\ncomf_move_f = 0 # \u30d5\u30a9\u30fc\u30ab\u30b9\u79fb\u52d5\u7ba1\u7406\u30d5\u30e9\u30b0\ncomf_move_i = 0 # \u30a2\u30a4\u30ea\u30b9\u79fb\u52d5\u7ba1\u7406\u30d5\u30e9\u30b0\ncomf_read_z = 0 # \u30ba\u30fc\u30e0\u5024\u8aad\u8fbc\u7ba1\u7406\u30d5\u30e9\u30b0\ncomf_read_f = 0 # \u30d5\u30a9\u30fc\u30ab\u30b9\u5024\u8aad\u8fbc\u7ba1\u7406\u30d5\u30e9\u30b0\ncomf_read_i = 0 # \u30a2\u30a4\u30ea\u30b9\u5024\u8aad\u8fbc\u7ba1\u7406\u30d5\u30e9\u30b0\n\n\n# \u753b\u9762\u8a2d\u5b9a\nroot = tk.Tk()\nroot.geometry('250x110') # \u753b\u9762\u30b5\u30a4\u30ba\nroot.title('\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1') # \u753b\u9762\u30bf\u30a4\u30c8\u30eb\n\nvar = tk.StringVar() # \u521d\u671f\u5316\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a\u30e9\u30d9\u30eb\u306e\u5909\u6570\n\n\n# \u30dc\u30bf\u30f3\u306e\u30af\u30ea\u30c3\u30af\u30a4\u30d9\u30f3\u30c8\ndef btn_ZoomSet_click(): # \u30ba\u30fc\u30e0set\u30dc\u30bf\u30f3\n    print('move_z')\n    global comf_move_z # \u4f7f\u3046\u3068\u3053\u308d\u3067\u30b0\u30ed\u30fc\u30d0\u30eb\u5ba3\u8a00\n    comf_move_z = 1 # \u5b9f\u969b\u306b\u4f7f\u3046\n\ndef btn_ZoomRead_click(): # \u30ba\u30fc\u30e0read\u30dc\u30bf\u30f3\n    print('read_z')\n    global comf_read_z\n    comf_read_z = 1\n\ndef btn_FocusSet_click(): # \u30d5\u30a9\u30fc\u30ab\u30b9set\u30dc\u30bf\u30f3\n    print('move_f')\n    global comf_move_f\n    comf_move_f = 1\n    \ndef btn_FocusRead_click(): # \u30d5\u30a9\u30fc\u30ab\u30b9read\u30dc\u30bf\u30f3\n    print('read_f')\n    global comf_read_f\n    comf_read_f = 1\n    \ndef btn_IrisSet_click(): # \u30a2\u30a4\u30ea\u30b9set\u30dc\u30bf\u30f3\n    print('move_i')\n    global comf_move_i\n    comf_move_i = 1\n\ndef btn_IrisRead_click(): # \u30a2\u30a4\u30ea\u30b9read\u30dc\u30bf\u30f3\n    print('read_i')\n    global comf_read_i\n    comf_read_i = 1\n\ndef btn_conn_click(): # \u63a5\u7d9a\u30dc\u30bf\u30f3\n    print('\u63a5\u7d9a')\n    global comf_conn\n    comf_conn = 1\n\ndef btn_disconn_click(): # \u5207\u65ad\u30dc\u30bf\u30f3\n    print('\u5207\u65ad')\n    global comf_disconn\n    comf_disconn = 1\n\ndef btn_init_click(): # \u521d\u671f\u5316\u30dc\u30bf\u30f3\n    print('\u521d\u671f\u5316')\n    global comf_init\n    comf_init = 1\n\n\n# \u30e9\u30d9\u30eb\u306e\u914d\u7f6e\nlb_Zoom = tk.Label(text = 'Zoom')\nlb_Zoom.grid(row=0,column=0)\nlb_Focus = tk.Label(text = 'Focus')\nlb_Focus.grid(row=1,column=0)\nlb_Iris = tk.Label(text = 'Iris')\nlb_Iris.grid(row=2,column=0)\n\n# \u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u914d\u7f6e\ntb_Zoom = tk.Entry(width=20)\ntb_Zoom.grid(row=0,column=1)\ntb_Focus = tk.Entry(width=20)\ntb_Focus.grid(row=1,column=1)\ntb_Iris = tk.Entry(width=20)\ntb_Iris.grid(row=2,column=1)\n\n\n# \u30dc\u30bf\u30f3\u306e\u914d\u7f6e\nbtn_ZoomSet = tk.Button(text = 'set', command = btn_ZoomSet_click)\nbtn_ZoomRead = tk.Button(text = 'read', command = btn_ZoomRead_click)\nbtn_ZoomSet.grid(row=0,column=2)\nbtn_ZoomRead.grid(row=0,column=3)\nbtn_FocusSet = tk.Button(text = 'set', command = btn_FocusSet_click)\nbtn_FocusRead = tk.Button(text = 'read', command = btn_FocusRead_click)\nbtn_FocusSet.grid(row=1,column=2)\nbtn_FocusRead.grid(row=1,column=3)\nbtn_IrisSet = tk.Button(text = 'set', command = btn_IrisSet_click)\nbtn_IrisRead = tk.Button(text = 'read', command = btn_IrisRead_click)\nbtn_IrisSet.grid(row=2,column=2)\nbtn_IrisRead.grid(row=2,column=3)\n\n# init\u95a2\u4fc2\nbtn_init = tk.Button(text = '\u521d\u671f\u5316', command = btn_init_click)\nbtn_init.grid(row=3,column=0)\nvar.set(&quot;&quot;) # \u521d\u671f\u5316\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u7a7a\u6b04\u306b\u3059\u308b\nlb_init = tk.Label(textvariable=var)\nlb_init.grid(row=3,column=1)\n\nbtn_conn = tk.Button(text = '\u63a5\u7d9a', command = btn_conn_click)\nbtn_disconn = tk.Button(text = '\u5207\u65ad', command=btn_disconn_click)\nbtn_conn.grid(row=3,column=2)\nbtn_disconn.grid(row=3,column=3)\n\n\n\n# \u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u7cfb\u306e\u30b3\u30fc\u30c9(\u30b9\u30ec\u30c3\u30c9)====================================\ncomf_receive = 0 # \u7d50\u679c\u3092\u53d7\u4fe1\u3057\u306b\u884c\u3063\u3066\u3044\u3044\u304b\u5224\u65ad\u3059\u308b\u30d5\u30e9\u30b0\n\ndef commCTR():\n    # \u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u306e\u8a2d\u5b9a\n    comm = serial.Serial()\n    comm.baudrate = 38400 # \u30dc\u30fc\u30ec\u30fc\u30c8\n    comm.parity = serial.PARITY_NONE\n    comm.bytesize = serial.EIGHTBITS\n    comm.stopbits = serial.STOPBITS_ONE\n    comm.timeout = 5 #sec\n    comm.port = 'COM7' # TSZC-06\u3092\u63a5\u7d9a\u3057\u3066\u3044\u308bCOM\u30dd\u30fc\u30c8\n\n    #\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306e\u547c\u3073\u51fa\u3057\n    global tf\n    tf = 1 # tf=1\u306e\u3042\u3044\u3060\u30b9\u30ec\u30c3\u30c9\u5185\u306e\u30eb\u30fc\u30d7\u304c\u5b9f\u884c\u3055\u308c\u308b\n    global comf_conn\n    global comf_disconn\n    global comf_init\n    global comf_move_z\n    global comf_move_f\n    global comf_move_i\n    global comf_read_z\n    global comf_read_f\n    global comf_read_i\n\n    global comf_receive\n    global comf_read_a\n    global var\n\n    # \u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\u30eb\u30fc\u30d7\n    while tf:\n        if comf_conn == 1: #\u30d5\u30e9\u30b0ON\u306e\u3068\u304d\u306e\u52d5\u4f5c\n            comf_conn = 0 #\u30d5\u30e9\u30b0OFF\u306b\u623b\u3059\n            print(&quot;\u63a5\u7d9a\u547d\u4ee4\u53d7\u4fe1&quot;)\n\n            if(comm.isOpen() == False):\n                print('connect')\n                comm.open() # COM\u30dd\u30fc\u30c8\u958b\u304f\n                comf_receive = 1 #\u53d7\u4fe1ON\n            else:\n                print('opened')\n        \n        if comf_disconn == 1:\n            comf_disconn = 0\n            print(&quot;\u5207\u65ad\u547d\u4ee4\u53d7\u4fe1&quot;)\n            comm.close() # COM\u30dd\u30fc\u30c8\u9589\u3058\u308b\n            comf_receive = 0 #\u53d7\u4fe1OFF\n\n        # init\n        if comf_init == 1:\n            comf_init = 0\n            print(&quot;\u521d\u671f\u5316\u547d\u4ee4\u53d7\u4fe1&quot;)\n            comm.reset_input_buffer() # \u30ce\u30a4\u30ba\u30c7\u30fc\u30bf\u304c\u3042\u308b\u5834\u5408\u304c\u3042\u308b\u306e\u3067\u30d0\u30c3\u30d5\u30a1\u3092\u30af\u30ea\u30a2\u3059\u308b\n            # zoom\u306e\u5024\u3092\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\n            send_string = 'init_a'\n            print(send_string)\n            var.set(&quot;\u521d\u671f\u5316\u4e2d&quot;)\n            comm.write(send_string.encode())\n            #\u30dc\u30bf\u30f3\u7121\u52b9\u5316\n            btn_ZoomSet.config(state=&quot;disable&quot;)\n            btn_ZoomRead.config(state=&quot;disable&quot;)\n            btn_FocusSet.config(state=&quot;disable&quot;)\n            btn_FocusRead.config(state=&quot;disable&quot;)\n            btn_IrisSet.config(state=&quot;disable&quot;)\n            btn_IrisRead.config(state=&quot;disable&quot;)\n            btn_init.config(state=&quot;disable&quot;)\n            btn_conn.config(state=&quot;disable&quot;)\n            btn_disconn.config(state=&quot;disable&quot;)\n\n        # read_a\n        if comf_read_a ==1:\n            comf_read_a = 0\n            print(&quot;read_a\u5b9f\u884c&quot;)\n            comm.reset_input_buffer()\n            send_string = 'read_a'\n            print(send_string)\n            comm.write(send_string.encode())\n\n        #zoom\u306eset\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u305f\u5f8c\n        if comf_move_z == 1:\n            comf_move_z = 0\n            print(&quot;comf_move_z&quot;)\n            # \u30c6\u30ad\u30b9\u30c8\u53d6\u5f97\n            comm.reset_input_buffer()\n            num = int(tb_Zoom.get())\n            # zoom\u306e\u5024\u3092\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\n            send_string = 'move_z,' + str(num)\n            print(send_string)\n            comm.write(send_string.encode())\n\n        #zoom\u306eread\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u305f\u5f8c\n        if comf_read_z == 1:\n            comf_read_z = 0\n            print(&quot;comf_read_z&quot;)\n            tb_Zoom.delete(0,tk.END) # \u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u521d\u671f\u5316\n            comm.reset_input_buffer()\n            # read_zoom\u547d\u4ee4\u3092\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\n            send_string = 'read_z'\n            comm.write(send_string.encode())\n\n        #focus\u306eset\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u305f\u5f8c\n        if comf_move_f == 1:\n            comf_move_f = 0\n            print(&quot;comf_move_f&quot;)\n            # \u30c6\u30ad\u30b9\u30c8\u53d6\u5f97\n            comm.reset_input_buffer()\n            num = int(tb_Focus.get())\n            # focus\u306e\u5024\u3092\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\n            send_string = 'move_f,' + str(num)\n            print(send_string)\n            comm.write(send_string.encode())\n\n        #focus\u306eread\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u305f\u5f8c\n        if comf_read_f == 1:\n            comf_read_f = 0\n            print(&quot;comf_read_f&quot;)\n            tb_Focus.delete(0,tk.END) # \u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u521d\u671f\u5316\n            comm.reset_input_buffer()\n            # read_iris\u547d\u4ee4\u3092\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\n            send_string = 'read_f'\n            comm.write(send_string.encode())\n\n        #iris\u306eset\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u305f\u5f8c\n        if comf_move_i == 1:\n            comf_move_i = 0\n            print(&quot;comf_move_i&quot;)\n            # \u30c6\u30ad\u30b9\u30c8\u53d6\u5f97\n            comm.reset_input_buffer()\n            num = int(tb_Iris.get())\n            # iris\u306e\u5024\u3092\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\n            send_string = 'move_i,' + str(num)\n            print(send_string)\n            comm.write(send_string.encode())\n\n        #iris\u306eread\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u305f\u5f8c\n        if comf_read_i == 1:\n            comf_read_i = 0\n            print(&quot;comf_read_i&quot;)\n            tb_Iris.delete(0,tk.END) # \u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u521d\u671f\u5316\n            comm.reset_input_buffer()\n            # read_iris\u547d\u4ee4\u3092\u30b7\u30ea\u30a2\u30eb\u901a\u4fe1\n            send_string = 'read_i'\n            comm.write(send_string.encode())\n\n        # \u6bce\u56de\u53d7\u4fe1\u3059\u308b\n        # readline\u3057\u305f\u7d50\u679c\u306b\u5fdc\u3058\u3066\u52d5\u4f5c\u3092\u5207\u308a\u66ff\u3048\u308b\n        # read_z,read_f,read_i\u3092\u542b\u3080\u6587\u5b57\u5217\u304c\u3042\u308b\u304b\u8abf\u3079\u308b\n        # init_a\u3092\u9001\u3063\u305f\u3089\u7d42\u4e86\u6642\u306binit_a_done\u304c\u8fd4\u3063\u3066\u304f\u308b\n\n        #comf_receive\u304c1\u306b\u306a\u3063\u3066\u3044\u308b\u3068\u304d(\u6bce\u56de\u53d7\u4fe1ON)\n        if comf_receive == 1:\n            # \u30b3\u30de\u30f3\u30c9\u3092\u9001\u3063\u305f\u7d50\u679c\u3092\u53d7\u4fe1\n            recv_string = comm.readline()\n            recv_string = recv_string.decode()\n            recv_list = []\n            recv_list = recv_string.split(',')\n            # \u30ea\u30b9\u30c8\u306e\u4e2d\u306bread_z,read_f,read_i\u304c\u542b\u307e\u308c\u308b\u304b\n            if 'read_z' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                tb_Zoom.delete(0,tk.END)\n                tb_Zoom.insert(0, recv_list[1])\n            elif 'read_f' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                tb_Focus.delete(0,tk.END)\n                tb_Focus.insert(0, recv_list[1])\n            elif 'read_i' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                tb_Iris.delete(0,tk.END)\n                tb_Iris.insert(0, recv_list[1])\n            # 'read_a'\u306e\u3068\u304d\n            elif 'read_a' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                tb_Zoom.delete(0,tk.END)\n                tb_Zoom.insert(0, recv_list[1])\n                tb_Focus.delete(0,tk.END)\n                tb_Focus.insert(0, recv_list[2])\n                tb_Iris.delete(0,tk.END)\n                tb_Iris.insert(0, recv_list[3])\n            # 'init_a'\u306e\u3068\u304d\n            elif 'init_a_done' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                var.set(&quot;&quot;)\n                messagebox.showinfo(&quot;\u30e1\u30c3\u30bb\u30fc\u30b8&quot;, &quot;\u521d\u671f\u5316\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f&quot;)\n                #\u30dc\u30bf\u30f3\u6709\u52b9\u5316\n                btn_ZoomSet.config(state=&quot;normal&quot;)\n                btn_ZoomRead.config(state=&quot;normal&quot;)\n                btn_FocusSet.config(state=&quot;normal&quot;)\n                btn_FocusRead.config(state=&quot;normal&quot;)\n                btn_IrisSet.config(state=&quot;normal&quot;)\n                btn_IrisRead.config(state=&quot;normal&quot;)\n                btn_init.config(state=&quot;normal&quot;)\n                btn_conn.config(state=&quot;normal&quot;)\n                btn_disconn.config(state=&quot;normal&quot;)\n                comf_read_a = 1\n            # move\u5f8c\u306eread\n            elif 'move_z;' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                comf_read_z = 1\n            elif 'move_f;' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                comf_read_f = 1\n            elif 'move_i;' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                comf_read_i = 1\n            # \u63a5\u7d9a\u76f4\u5f8c\u306eread_a\n            elif 'ZLC TESBIT TSZC-06' in recv_list[0]:\n                print(&quot;\u30b3\u30de\u30f3\u30c9\u7d50\u679c\u53d7\u4fe1&quot;,recv_string)\n                comf_read_a = 1\n\n            else :\n                time.sleep(0.2)\n\n        time.sleep(0.2)\n\n\n# \u30b9\u30ec\u30c3\u30c9\u958b\u59cb==========================================================\nthreadComm = threading.Thread(target=commCTR)\nthreadComm.start()\nthreadComm.join\nprint(&quot;\u30b9\u30ec\u30c3\u30c9\u8d77\u52d5\u5b8c\u4e86&quot;)\n\n# \u9589\u3058\u308b\u30dc\u30bf\u30f3\ndef on_closing():\n    global tf\n    tf = 0\n    root.destroy()\n\nroot.protocol(&quot;WM_DELETE_WINDOW&quot;, on_closing)\n\n# \u753b\u9762\u8868\u793a\nroot.mainloop()\n\n<\/pre>","protected":false},"excerpt":{"rendered":"<p>\u63d0\u4f9b\u3057\u3066\u3044\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3781","post","type-post","status-publish","format-standard","hentry","category-1"],"_links":{"self":[{"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/3781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3781"}],"version-history":[{"count":1,"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/3781\/revisions"}],"predecessor-version":[{"id":3782,"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=\/wp\/v2\/posts\/3781\/revisions\/3782"}],"wp:attachment":[{"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3781"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3781"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tesbit.co.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}