{"id":873,"date":"2013-08-14T16:39:12","date_gmt":"2013-08-14T16:39:12","guid":{"rendered":"http:\/\/www.raveon.com\/data_radio_info\/?p=873"},"modified":"2019-05-20T09:24:25","modified_gmt":"2019-05-20T16:24:25","slug":"wmx-code-examples","status":"publish","type":"post","link":"https:\/\/www.raveon.com\/data_radio_info\/wmx-code-examples-873\/","title":{"rendered":"WMX Code Examples"},"content":{"rendered":"<p>This article describes various software coding techniques to implement the WMX protocol.<\/p>\n<h1>Binary Encoding the WMX Data Field<\/h1>\n<p>If you are useing WMX to send 8-bit binary data, then you must encode the data as described in the WMX protocol document.\u00a0 If you are sending 7-bit ASCII data, or your data will never have the ASCII charactor 255, 3, or 4 in it, then you do not need to encode the data, and yo umay simply embed your data in the data field of the WMX packet.<\/p>\n<h2>Visual Basic Encoding Example<\/h2>\n<p><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Function<\/span><\/span><span style=\"font-size: small;\"> BinaryEncodeWMX(<\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">ByRef<\/span><\/span><span style=\"font-size: small;\"> bdata() <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">As<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Char<\/span><\/span><span style=\"font-size: small;\">, <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">ByRef<\/span><\/span><span style=\"font-size: small;\"> ByteCount <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">As<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Integer<\/span><\/span><span style=\"font-size: small;\">) <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">As<\/span><\/span><span style=\"font-size: small;\"> Array<\/span><\/p>\n<address><span style=\"color: #008000; font-size: small;\"><span style=\"color: #008000; font-size: small;\">&#8216; WMX encodes the charactors 0x03 and 0x04 so they never appear in the data <\/span><\/span><\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Dim<\/span><\/span><span style=\"font-size: small;\"> T(1000) <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">As<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Char<\/span><\/span><\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Dim<\/span><\/span><span style=\"font-size: small;\"> Y <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">As<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Integer<\/span><\/span><span style=\"font-size: small;\"> = 0<\/span><\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Dim<\/span><\/span><span style=\"font-size: small;\"> X <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">As<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Integer<\/span><\/span><\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">For<\/span><\/span><span style=\"font-size: small;\"> X = 0 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">To<\/span><\/span><span style=\"font-size: small;\"> ByteCount &#8211; 1<\/span><\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">If<\/span><\/span><span style=\"font-size: small;\"> bdata(X) = Chr(255) <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Or<\/span><\/span><span style=\"font-size: small;\"> bdata(X) = Chr(3) <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Or<\/span><\/span><span style=\"font-size: small;\"> bdata(X) = Chr(4) <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Or<\/span><\/span><span style=\"font-size: small;\"> bdata(X) = Chr(13) <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Then<\/span><\/span><\/address>\n<address style=\"padding-left: 30px;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 T(Y) = Chr(255)<\/address>\n<address style=\"padding-left: 30px;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Y = Y + 1<\/address>\n<address style=\"padding-left: 30px;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 T(Y) = Chr(255 &#8211; Asc(bdata(X)))<\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Else<\/span><\/span><\/address>\n<address style=\"padding-left: 30px;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 T(Y) = bdata(X)<\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">End<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">If<\/span><\/span><\/address>\n<address style=\"padding-left: 30px;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Y = Y + 1<\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Next<\/span><\/span><\/address>\n<address style=\"padding-left: 30px;\">BinaryEncodeWMX = T<\/address>\n<address style=\"padding-left: 30px;\">ByteCount = Y<\/address>\n<address><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">End<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Function<\/span><\/span><\/address>\n<address>\u00a0<\/address>\n<address>\n<h1>Binary Decoding the WMX Data Field<\/h1>\n<\/address>\n<h2>Visual Basic\u00a0Bindary Decoding\u00a0Example<\/h2>\n<address>&#8216; Get the data, converting back to binary. ETXpos points to the end of the data array, SOTpos points to the beginning.<\/address>\n<address>&#8216; WMX is a string containing the binary encoded WMX bytes as embedded inside the WMX packet.<\/address>\n<address>x = SOTpos + 1<\/p>\n<address>Y\u00a0 = 0<\/address>\n<\/address>\n<address><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">While<\/span><\/span><span style=\"font-size: small;\"> x &lt; (ETXpos &#8211; SOTpos)<\/span><\/address>\n<address>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ch1 = Mid(WMX, x, 1)<\/address>\n<address style=\"padding-left: 60px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">If<\/span><\/span><span style=\"font-size: small;\"> Ch1 = 255 <\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Then<\/span><\/span><\/address>\n<address style=\"padding-left: 60px;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 x = x + 1<\/address>\n<address style=\"padding-left: 60px;\">Ch1 = Mid(WMX, x, 1)<\/address>\n<address style=\"padding-left: 60px;\"><span style=\"color: #008000; font-size: small;\"><span style=\"color: #008000; font-size: small;\">&#8216; decode the binary encoding<\/span><\/span><\/address>\n<address>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NewWMX.DataBytes(Y) = 255 &#8211; Ch1<\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">Else<\/span><\/span><\/address>\n<address>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NewWMX.DataBytes(Y) = Ch1<\/address>\n<address style=\"padding-left: 30px;\"><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">End<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">If<\/span><\/span><\/address>\n<address>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 x = x + 1<\/address>\n<address>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Y = Y + 1<\/address>\n<address><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">End<\/span><\/span><span style=\"color: #0000ff; font-size: small;\"><span style=\"color: #0000ff; font-size: small;\">While<\/span><\/span><\/address>\n<address>NewWMX.ByteCount = Y<\/address>\n<h2>\u00a0C Bindary Decoding Example<\/h2>\n<address>\/\/ ***************************************************************************<\/address>\n<address>\/\/ Move the data from a WMX buffer over to the txbits<\/address>\n<address>\/\/ Remove any binary encoding.<\/address>\n<address>\/\/ User Sends Actual data over-the-air<\/address>\n<address>\/\/ 0xFF 0x00 0xFF<\/address>\n<address>\/\/ 0xFF 0xFC 0x03<\/address>\n<address>\/\/ 0xFF 0xFB 0x04<\/address>\n<address>\/\/ byte_count is the number of bytes in the WMX data portion of the WMX frame<\/address>\n<address>\/\/ Return the numberof bytes to transmit over the air<\/address>\n<address>\/\/ ****************************************************************************<\/address>\n<address>int move_wmxbuff(char buf_num, int byte_count, int data_location){<\/address>\n<address>int x = 0;<\/address>\n<address>int ret_val = 0;<\/address>\n<address>unsigned char c1;<\/address>\n<address>unsigned char c2;<\/address>\n<address>\u00a0<\/address>\n<address>while ((x &lt; byte_count) &amp;&amp; ( x &lt; MAX_PACKET) &amp;&amp; ( x &lt; WMX_BUFFER_SIZE)){<\/address>\n<address style=\"padding-left: 30px;\">c1 = wmx_tx_framebuff[buf_num][data_location]; \/\/ get the byte<\/address>\n<address style=\"padding-left: 30px;\">data_location++;<\/address>\n<address style=\"padding-left: 30px;\">c2 = wmx_tx_framebuff[buf_num][data_location]; \/\/ get the next byte<\/address>\n<address style=\"padding-left: 30px;\">if (c1 == WMX_BINARY_CODE){<\/address>\n<address style=\"padding-left: 60px;\">\u00a0\/\/ We detected a binary flag, so decode it.<\/address>\n<address style=\"padding-left: 60px;\">c1 = WMX_BINARY_CODE &#8211; c2; \/\/ decode it<\/address>\n<address style=\"padding-left: 60px;\">\/\/ Move past the second byte<\/address>\n<address style=\"padding-left: 60px;\">data_location++;<\/address>\n<address style=\"padding-left: 60px;\">x++;<\/address>\n<address style=\"padding-left: 30px;\">}<\/address>\n<address style=\"padding-left: 30px;\">txbits[txbit_put] = c1; \/\/ move the byte to txbits<\/address>\n<address style=\"padding-left: 30px;\">txbit_put++;<\/address>\n<address style=\"padding-left: 30px;\">ret_val++;<\/address>\n<address style=\"padding-left: 30px;\">x++;<\/address>\n<address style=\"padding-left: 30px;\">}<\/address>\n<address style=\"padding-left: 30px;\">return ret_val;<\/address>\n<address>}<\/address>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article describes various software coding techniques to implement the WMX protocol. Binary Encoding the WMX Data Field If you are useing WMX to send 8-bit binary data, then you must encode the data as described in the WMX protocol document.\u00a0 If you are sending 7-bit ASCII data, or your data will never have the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[60],"tags":[],"_links":{"self":[{"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/posts\/873"}],"collection":[{"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/comments?post=873"}],"version-history":[{"count":8,"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/posts\/873\/revisions"}],"predecessor-version":[{"id":923,"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/posts\/873\/revisions\/923"}],"wp:attachment":[{"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/media?parent=873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/categories?post=873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.raveon.com\/data_radio_info\/wp-json\/wp\/v2\/tags?post=873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}