{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"chrome\/chromium app: read RFID cards via chome.serial","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/109 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"109\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  \n<div class=\"document\">\n\n\n<p>How to produce errors:<\/p>\n<ul class=\"simple\">\n<li>Windows: Disable the COM port in device manager<\/li>\n<li>Linux: Remove read rights from device file \/dev\/ttyS0<\/li>\n<\/ul>\n<\/div>\n\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/109\/rev-raw\/02ebc10c05731ecea593d1e612f14de107640d21\/errors.rst\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/109#errors.rst\">errors.rst<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.javascript .de1, .javascript .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.javascript  {font-family:monospace;}\n.javascript .imp {font-weight: bold; color: red;}\n.javascript li, .javascript .li1 {color: #DDD;}\n.javascript .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.javascript .kw1 {color: #000066; font-weight: bold;}\n.javascript .kw2 {color: #003366; font-weight: bold;}\n.javascript .kw3 {color: #000066;}\n.javascript .co1 {color: #006600; font-style: italic;}\n.javascript .co2 {color: #009966; font-style: italic;}\n.javascript .coMULTI {color: #006600; font-style: italic;}\n.javascript .es0 {color: #000099; font-weight: bold;}\n.javascript .br0 {color: #009900;}\n.javascript .sy0 {color: #339933;}\n.javascript .st0 {color: #3366CC;}\n.javascript .nu0 {color: #CC0000;}\n.javascript .me1 {color: #660066;}\n.javascript span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"javascript\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\">rfidReader <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; webview<span class=\"sy0\">:<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; connectionId<span class=\"sy0\">:<\/span> <span class=\"st0\">''<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; connected<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; infoInterval<span class=\"sy0\">:<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">,<\/span>\n&#160; &#160; stringReceived<span class=\"sy0\">:<\/span> <span class=\"st0\">''<\/span><span class=\"sy0\">,<\/span>\n&#160;\n&#160; &#160; <span class=\"coMULTI\">\/**<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* Initialize the rfid reader connection and register the onReceive event<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; init<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> self <span class=\"sy0\">=<\/span> <span class=\"kw1\">this<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; window.<span class=\"me1\">addEventListener<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'load'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; self.<span class=\"me1\">webview<\/span> <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'guestportalWebview'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; self.<span class=\"me1\">webview<\/span>.<span class=\"me1\">addEventListener<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;loadstop&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>self.<span class=\"me1\">connected<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ load all devices<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; chrome.<span class=\"me1\">serial<\/span>.<span class=\"me1\">getDevices<\/span><span class=\"br0\">&#40;<\/span>self.<span class=\"me1\">getDevicesCallback<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; chrome.<span class=\"me1\">serial<\/span>.<span class=\"me1\">onReceive<\/span>.<span class=\"me1\">addListener<\/span><span class=\"br0\">&#40;<\/span>self.<span class=\"me1\">onReceiveCallback<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n&#160;\n&#160; &#160; <span class=\"coMULTI\">\/**<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* Convert an array buffer into a string.<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @param array data<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @return String<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; convertArrayBufferToString<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span> <span class=\"br0\">&#40;<\/span>data<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> String.<span class=\"me1\">fromCharCode<\/span>.<span class=\"me1\">apply<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">null<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">new<\/span> Uint8Array<span class=\"br0\">&#40;<\/span>data<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n&#160;\n&#160; &#160; <span class=\"coMULTI\">\/**<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* Removes not used numbers from the serial readout and trim it.<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* This has to be done, otherwise the card id is not usable.<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* Example:<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* 39383431303030313131333036393032 converts to 9841000111306902<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @param String result<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @return String<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; convertResult<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>result<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span> result.<span class=\"me1\">replace<\/span><span class=\"br0\">&#40;<\/span><span class=\"co2\">\/\\d(\\d)\/g<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'$1'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">replace<\/span><span class=\"br0\">&#40;<\/span><span class=\"co2\">\/^\\s+|\\s+$\/gm<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">''<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n&#160;\n&#160; &#160; <span class=\"coMULTI\">\/**<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* The callback for fetching the available serial devices.<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @param array ports Array of XXX with all available devices<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; getDevicesCallback<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>ports<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> path <span class=\"sy0\">=<\/span> <span class=\"kw2\">null<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">typeof<\/span> ports <span class=\"sy0\">===<\/span> <span class=\"st0\">'undefined'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">showError<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'No serial devices found.'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"kw1\">if<\/span> &#160;<span class=\"br0\">&#40;<\/span>ports.<span class=\"me1\">length<\/span> <span class=\"sy0\">===<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>clientInformation.<span class=\"me1\">platform<\/span>.<span class=\"me1\">match<\/span><span class=\"br0\">&#40;<\/span><span class=\"co2\">\/linux\/i<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"co1\">\/\/we do not get any information about serial devices<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ on linux, so we simply assume there is one<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; path <span class=\"sy0\">=<\/span> <span class=\"st0\">'\/dev\/ttyS0'<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">showError<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'No serial devices found.'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; path <span class=\"sy0\">=<\/span> ports<span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#93;<\/span>.<span class=\"me1\">path<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ connect to the first serial device<\/span>\n&#160; &#160; &#160; &#160; chrome.<span class=\"me1\">serial<\/span>.<span class=\"me1\">connect<\/span><span class=\"br0\">&#40;<\/span>path<span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span>bitrate<span class=\"sy0\">:<\/span> <span class=\"nu0\">19200<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>connectionInfo<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">typeof<\/span> connectionInfo <span class=\"sy0\">===<\/span> <span class=\"st0\">'undefined'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">showError<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Cannot access serial device.'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">connectionId<\/span> <span class=\"sy0\">=<\/span> connectionInfo.<span class=\"me1\">connectionId<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">connected<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n&#160;\n&#160; &#160; <span class=\"coMULTI\">\/**<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* The callback for fetching the data sent by the serial reader.<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @param object info The readout from the serial port<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;* @return void<\/span>\n<span class=\"coMULTI\">&#160; &#160; &#160;*\/<\/span>\n&#160; &#160; onReceiveCallback<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>info<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>info.<span class=\"me1\">connectionId<\/span> <span class=\"sy0\">==<\/span> rfidReader.<span class=\"me1\">connectionId<\/span> <span class=\"sy0\">&amp;&amp;<\/span> info.<span class=\"me1\">data<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw2\">var<\/span> str <span class=\"sy0\">=<\/span> rfidReader.<span class=\"me1\">convertArrayBufferToString<\/span><span class=\"br0\">&#40;<\/span>info.<span class=\"me1\">data<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>str.<span class=\"me1\">charAt<\/span><span class=\"br0\">&#40;<\/span>str.<span class=\"me1\">length<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">===<\/span> <span class=\"st0\">&quot;<span class=\"es0\">\\n<\/span>&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">stringReceived<\/span> <span class=\"sy0\">+=<\/span> str.<span class=\"me1\">substring<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> str.<span class=\"me1\">length<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">stringReceived<\/span> <span class=\"sy0\">=<\/span> rfidReader.<span class=\"me1\">convertResult<\/span><span class=\"br0\">&#40;<\/span>rfidReader.<span class=\"me1\">stringReceived<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>rfidReader.<span class=\"me1\">stringReceived<\/span> <span class=\"sy0\">===<\/span> <span class=\"st0\">''<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'received an empty string'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"kw1\">return<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160;\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span class=\"co1\">\/\/ send the retreived data to the webview content<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">webview<\/span>.<span class=\"me1\">contentWindow<\/span>.<span class=\"me1\">postMessage<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span>cardId<span class=\"sy0\">:<\/span> rfidReader.<span class=\"me1\">stringReceived<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'*'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">stringReceived<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">''<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; rfidReader.<span class=\"me1\">stringReceived<\/span> <span class=\"sy0\">+=<\/span> str<span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; &#160; &#160; <span class=\"br0\">&#125;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n&#160;\n&#160; &#160; showError<span class=\"sy0\">:<\/span> <span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>message<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n&#160; &#160; &#160; &#160; console.<span class=\"me1\">error<\/span><span class=\"br0\">&#40;<\/span>message<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'error'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">appendChild<\/span><span class=\"br0\">&#40;<\/span>document.<span class=\"me1\">createTextNode<\/span><span class=\"br0\">&#40;<\/span>message<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; &#160; &#160; document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'error'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">style<\/span>.<span class=\"me1\">display<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">'block'<\/span><span class=\"sy0\">;<\/span>\n&#160; &#160; <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span>\n&#160;\nrfidReader.<span class=\"me1\">init<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/109\/rev-raw\/02ebc10c05731ecea593d1e612f14de107640d21\/rfidReader.js\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/109#rfidReader.js\">rfidReader.js<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
