[{"data":1,"prerenderedAt":665},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Fquick-start":116,"\u002Fgetting-started\u002Fquick-start-surround":660},[4,27,53,74,108,112],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Example app and development","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F4.development",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Guides","i-lucide-book-open","\u002Fguides","2.guides",[33,37,41,45,49],{"title":34,"path":35,"stem":36},"JavaScript API","\u002Fguides\u002Fjavascript-api","2.guides\u002F1.javascript-api",{"title":38,"path":39,"stem":40},"AT commands, exchange and CMUX","\u002Fguides\u002Fat-commands","2.guides\u002F2.at-commands",{"title":42,"path":43,"stem":44},"Rust","\u002Fguides\u002Frust","2.guides\u002F3.rust",{"title":46,"path":47,"stem":48},"Permissions","\u002Fguides\u002Fpermissions","2.guides\u002F4.permissions",{"title":50,"path":51,"stem":52},"Parsers","\u002Fguides\u002Fparsers","2.guides\u002F5.parsers",{"title":54,"icon":55,"path":56,"stem":57,"children":58,"page":26},"API reference","i-lucide-file-code","\u002Freference","3.reference",[59,63,67,71],{"title":60,"path":61,"stem":62},"SerialPort","\u002Freference\u002Fserial-port","3.reference\u002F1.serial-port",{"title":64,"path":65,"stem":66},"Types","\u002Freference\u002Ftypes","3.reference\u002F2.types",{"title":68,"path":69,"stem":70},"Tauri commands","\u002Freference\u002Fcommands","3.reference\u002F3.commands",{"title":46,"path":72,"stem":73},"\u002Freference\u002Fpermissions","3.reference\u002F4.permissions",{"title":75,"icon":76,"path":77,"stem":78,"children":79,"page":26},"Platforms","i-lucide-monitor-smartphone","\u002Fplatforms","4.platforms",[80,84,88,92,96,100,104],{"title":81,"path":82,"stem":83},"Overview","\u002Fplatforms\u002Foverview","4.platforms\u002F1.overview",{"title":85,"path":86,"stem":87},"Desktop","\u002Fplatforms\u002Fdesktop","4.platforms\u002F2.desktop",{"title":89,"path":90,"stem":91},"Android (USB)","\u002Fplatforms\u002Fandroid","4.platforms\u002F3.android",{"title":93,"path":94,"stem":95},"iOS","\u002Fplatforms\u002Fios","4.platforms\u002F4.ios",{"title":97,"path":98,"stem":99},"Serial over TCP","\u002Fplatforms\u002Ftcp","4.platforms\u002F5.tcp",{"title":101,"path":102,"stem":103},"Bluetooth LE (BLE)","\u002Fplatforms\u002Fble","4.platforms\u002F6.ble",{"title":105,"path":106,"stem":107},"DTR \u002F RTS on open","\u002Fplatforms\u002Fdtr-rts","4.platforms\u002F7.dtr-rts",{"title":109,"path":110,"stem":111},"Migration guide","\u002Fmigration","5.migration",{"title":113,"path":114,"stem":115},"Changelog","\u002Fchangelog","9.changelog",{"id":117,"title":19,"body":118,"description":654,"extension":655,"generated":26,"links":656,"meta":657,"navigation":172,"path":20,"seo":658,"stem":21,"__hash__":659},"docs\u002F1.getting-started\u002F3.quick-start.md",{"type":119,"value":120,"toc":650},"minimark",[121,490,506,511,582,588,592,640,646],[122,123,128],"pre",{"className":124,"code":125,"language":126,"meta":127,"style":127},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { SerialPort } from \"tauri-plugin-serialplugin-api\";\n\nconst ports = await SerialPort.available_ports();   \u002F\u002F { \"\u002Fdev\u002FttyUSB0\": { type: \"USB\", vid, pid, … }, … }\n\nconst port = new SerialPort({ path: Object.keys(ports)[0], baudRate: 115200 });\nawait port.open();\n\nconst handle = await port.watch({\n  onData: (text) => console.log(\"rx\", text),\n  onDisconnect: (reason) => console.log(\"gone:\", reason),\n});\n\nawait port.write(\"hello\\n\");\n\nawait handle.unwatch();\nawait port.close();\n","ts","",[129,130,131,167,174,209,214,278,296,301,325,370,409,419,424,452,457,474],"code",{"__ignoreMap":127},[132,133,136,140,144,148,151,154,157,161,164],"span",{"class":134,"line":135},"line",1,[132,137,139],{"class":138},"s7zQu","import",[132,141,143],{"class":142},"sMK4o"," {",[132,145,147],{"class":146},"sTEyZ"," SerialPort",[132,149,150],{"class":142}," }",[132,152,153],{"class":138}," from",[132,155,156],{"class":142}," \"",[132,158,160],{"class":159},"sfazB","tauri-plugin-serialplugin-api",[132,162,163],{"class":142},"\"",[132,165,166],{"class":142},";\n",[132,168,170],{"class":134,"line":169},2,[132,171,173],{"emptyLinePlaceholder":172},true,"\n",[132,175,177,181,184,187,190,192,195,199,202,205],{"class":134,"line":176},3,[132,178,180],{"class":179},"spNyl","const",[132,182,183],{"class":146}," ports ",[132,185,186],{"class":142},"=",[132,188,189],{"class":138}," await",[132,191,147],{"class":146},[132,193,194],{"class":142},".",[132,196,198],{"class":197},"s2Zo4","available_ports",[132,200,201],{"class":146},"()",[132,203,204],{"class":142},";",[132,206,208],{"class":207},"sHwdD","   \u002F\u002F { \"\u002Fdev\u002FttyUSB0\": { type: \"USB\", vid, pid, … }, … }\n",[132,210,212],{"class":134,"line":211},4,[132,213,173],{"emptyLinePlaceholder":172},[132,215,217,219,222,224,227,229,232,235,239,242,245,247,250,253,257,260,263,266,268,271,273,276],{"class":134,"line":216},5,[132,218,180],{"class":179},[132,220,221],{"class":146}," port ",[132,223,186],{"class":142},[132,225,226],{"class":142}," new",[132,228,147],{"class":197},[132,230,231],{"class":146},"(",[132,233,234],{"class":142},"{",[132,236,238],{"class":237},"swJcz"," path",[132,240,241],{"class":142},":",[132,243,244],{"class":146}," Object",[132,246,194],{"class":142},[132,248,249],{"class":197},"keys",[132,251,252],{"class":146},"(ports)[",[132,254,256],{"class":255},"sbssI","0",[132,258,259],{"class":146},"]",[132,261,262],{"class":142},",",[132,264,265],{"class":237}," baudRate",[132,267,241],{"class":142},[132,269,270],{"class":255}," 115200",[132,272,150],{"class":142},[132,274,275],{"class":146},")",[132,277,166],{"class":142},[132,279,281,284,287,289,292,294],{"class":134,"line":280},6,[132,282,283],{"class":138},"await",[132,285,286],{"class":146}," port",[132,288,194],{"class":142},[132,290,291],{"class":197},"open",[132,293,201],{"class":146},[132,295,166],{"class":142},[132,297,299],{"class":134,"line":298},7,[132,300,173],{"emptyLinePlaceholder":172},[132,302,304,306,309,311,313,315,317,320,322],{"class":134,"line":303},8,[132,305,180],{"class":179},[132,307,308],{"class":146}," handle ",[132,310,186],{"class":142},[132,312,189],{"class":138},[132,314,286],{"class":146},[132,316,194],{"class":142},[132,318,319],{"class":197},"watch",[132,321,231],{"class":146},[132,323,324],{"class":142},"{\n",[132,326,328,331,333,336,340,342,345,348,350,353,355,357,360,362,364,367],{"class":134,"line":327},9,[132,329,330],{"class":197},"  onData",[132,332,241],{"class":142},[132,334,335],{"class":142}," (",[132,337,339],{"class":338},"sHdIc","text",[132,341,275],{"class":142},[132,343,344],{"class":179}," =>",[132,346,347],{"class":146}," console",[132,349,194],{"class":142},[132,351,352],{"class":197},"log",[132,354,231],{"class":146},[132,356,163],{"class":142},[132,358,359],{"class":159},"rx",[132,361,163],{"class":142},[132,363,262],{"class":142},[132,365,366],{"class":146}," text)",[132,368,369],{"class":142},",\n",[132,371,373,376,378,380,383,385,387,389,391,393,395,397,400,402,404,407],{"class":134,"line":372},10,[132,374,375],{"class":197},"  onDisconnect",[132,377,241],{"class":142},[132,379,335],{"class":142},[132,381,382],{"class":338},"reason",[132,384,275],{"class":142},[132,386,344],{"class":179},[132,388,347],{"class":146},[132,390,194],{"class":142},[132,392,352],{"class":197},[132,394,231],{"class":146},[132,396,163],{"class":142},[132,398,399],{"class":159},"gone:",[132,401,163],{"class":142},[132,403,262],{"class":142},[132,405,406],{"class":146}," reason)",[132,408,369],{"class":142},[132,410,412,415,417],{"class":134,"line":411},11,[132,413,414],{"class":142},"}",[132,416,275],{"class":146},[132,418,166],{"class":142},[132,420,422],{"class":134,"line":421},12,[132,423,173],{"emptyLinePlaceholder":172},[132,425,427,429,431,433,436,438,440,443,446,448,450],{"class":134,"line":426},13,[132,428,283],{"class":138},[132,430,286],{"class":146},[132,432,194],{"class":142},[132,434,435],{"class":197},"write",[132,437,231],{"class":146},[132,439,163],{"class":142},[132,441,442],{"class":159},"hello",[132,444,445],{"class":146},"\\n",[132,447,163],{"class":142},[132,449,275],{"class":146},[132,451,166],{"class":142},[132,453,455],{"class":134,"line":454},14,[132,456,173],{"emptyLinePlaceholder":172},[132,458,460,462,465,467,470,472],{"class":134,"line":459},15,[132,461,283],{"class":138},[132,463,464],{"class":146}," handle",[132,466,194],{"class":142},[132,468,469],{"class":197},"unwatch",[132,471,201],{"class":146},[132,473,166],{"class":142},[132,475,477,479,481,483,486,488],{"class":134,"line":476},16,[132,478,283],{"class":138},[132,480,286],{"class":146},[132,482,194],{"class":142},[132,484,485],{"class":197},"close",[132,487,201],{"class":146},[132,489,166],{"class":142},[491,492,493,494,497,498,501,502,505],"p",{},"Binary data: ",[129,495,496],{},"writeBinary(new Uint8Array([…]))"," and\n",[129,499,500],{},"watch(handlers, { decode: false })"," (or ",[129,503,504],{},"readBinary()",").",[507,508,510],"h2",{"id":509},"talking-to-a-modem","Talking to a modem",[122,512,514],{"className":124,"code":513,"language":126,"meta":127,"style":127},"const r = await port.sendAt(\"AT+CSQ\");   \u002F\u002F queued, waits for OK \u002F ERROR\nconsole.log(r.status, r.solicitedBody);  \u002F\u002F \"ok\", [\"+CSQ: 27,0\"]\n",[129,515,516,550],{"__ignoreMap":127},[132,517,518,520,523,525,527,529,531,534,536,538,541,543,545,547],{"class":134,"line":135},[132,519,180],{"class":179},[132,521,522],{"class":146}," r ",[132,524,186],{"class":142},[132,526,189],{"class":138},[132,528,286],{"class":146},[132,530,194],{"class":142},[132,532,533],{"class":197},"sendAt",[132,535,231],{"class":146},[132,537,163],{"class":142},[132,539,540],{"class":159},"AT+CSQ",[132,542,163],{"class":142},[132,544,275],{"class":146},[132,546,204],{"class":142},[132,548,549],{"class":207},"   \u002F\u002F queued, waits for OK \u002F ERROR\n",[132,551,552,555,557,559,562,564,567,569,572,574,577,579],{"class":134,"line":169},[132,553,554],{"class":146},"console",[132,556,194],{"class":142},[132,558,352],{"class":197},[132,560,561],{"class":146},"(r",[132,563,194],{"class":142},[132,565,566],{"class":146},"status",[132,568,262],{"class":142},[132,570,571],{"class":146}," r",[132,573,194],{"class":142},[132,575,576],{"class":146},"solicitedBody)",[132,578,204],{"class":142},[132,580,581],{"class":207},"  \u002F\u002F \"ok\", [\"+CSQ: 27,0\"]\n",[491,583,584,585,194],{},"See ",[586,587,38],"a",{"href":39},[507,589,591],{"id":590},"surviving-unplugs","Surviving unplugs",[122,593,595],{"className":124,"code":594,"language":126,"meta":127,"style":127},"port.enableAutoReconnect({ interval: 3000, maxAttempts: null });\n\u002F\u002F after onDisconnect the port is reopened and the watch restored\n",[129,596,597,635],{"__ignoreMap":127},[132,598,599,602,604,607,609,611,614,616,619,621,624,626,629,631,633],{"class":134,"line":135},[132,600,601],{"class":146},"port",[132,603,194],{"class":142},[132,605,606],{"class":197},"enableAutoReconnect",[132,608,231],{"class":146},[132,610,234],{"class":142},[132,612,613],{"class":237}," interval",[132,615,241],{"class":142},[132,617,618],{"class":255}," 3000",[132,620,262],{"class":142},[132,622,623],{"class":237}," maxAttempts",[132,625,241],{"class":142},[132,627,628],{"class":142}," null",[132,630,150],{"class":142},[132,632,275],{"class":146},[132,634,166],{"class":142},[132,636,637],{"class":134,"line":169},[132,638,639],{"class":207},"\u002F\u002F after onDisconnect the port is reopened and the watch restored\n",[491,641,584,642,194],{},[586,643,645],{"href":644},"\u002Fguides\u002Fjavascript-api#auto-reconnect","Auto-reconnect",[647,648,649],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":127,"searchDepth":169,"depth":176,"links":651},[652,653],{"id":509,"depth":169,"text":510},{"id":590,"depth":169,"text":591},"List ports, open one, stream data, talk to a modem and survive unplugs.","md",null,{},{"title":19,"description":654},"S8PtnxEUFcxxVJsfmGQo4Y1ZlrhlFMtgDuJqJXEr9VQ",[661,663],{"title":15,"path":16,"stem":17,"description":662,"children":-1},"Add the crate and the npm package, register the plugin and allow it in a capability.",{"title":23,"path":24,"stem":25,"description":664,"children":-1},"The example terminal app, running the tests, security and license.",1794158000995]