<div dir="ltr">Well, I'm not sure about the SerialDevice.Write function because that one is not documented (does it really exist?) But you're right, at the end of the story all data is exchanged as sequence of bytes; one byte at the time. (Together with the configured start-, stop and parity bits, but that is completely transparent to the programmer once the device is open for use.) So, PST added a few useful wrapper functions to do the conversion to and from bytes automatically for a few frequently used data types. Those functions make it possible to send and receive text strings, 2 byte integers and 4 byte integers, by calling one of the wrapper functions. On the lower level, this conversion is pretty straightforward because the internal (in-memory) representation of this data is already a sequence of bytes. However, things become confusing for most people when ASCII characters have to be translated to their numerical representation, and vice versa. Especially when the text contains numbers. But that is something you already figured out. (I'm just ignoring multi-byte character sets for the moment, because that's even more challenging.)<div>
<br></div><div>A similar thing is true for the way numerical data is represented in E-Basic. A numerical value can be represented by E-Basic in several ways: decimal, hexadecimal, ... It's just the textual presentation in the script that is different; once the value is stored in memory their is no difference in the byte values. The &Hxx syntax is mainly available for our convenience; to make life easier when dealing with binary data. In theory it would have been possible to add support for a binary representation in E-Basic, but unfortunately that is not available. But no matter what the textual representation is, at the end it is just another byte in memory. Regarding this point, you might also have a look at the Asc() and Chr() functions. These functions will convert characters type to numerical type (and back), without changing the value in-memory. This allows you to write Asc("@") instead of &H40 or 64.</div>
<div><br></div><div>Hope this helps to understand the (seemingly) subtle, but important differences.</div><div><br></div><div>Paul</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On 9 July 2014 20:59, Jay Hennessy <span dir="ltr"><<a href="mailto:tjay.hennessy@gmail.com" target="_blank">tjay.hennessy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div>Paul,</div><div><br></div><div>So this method would send the binary equivalent of those hex values which represent ascii characters.</div><div><br></div><div>Do you know if/how Serial.WriteBytes is different from Serial.Write?</div>
<div><br></div><div>I would assume that either way the information is going to be sent in the form of bytes through the port. Is the protocol for how e-prime sends bytes different for one method vs. the other.</div><div>Or is WriteBytes the same as Write except one takes hexadecimal values and one the other takes string values then converts them to bytes?</div>
<div><br></div><div>Any wisdom you could pass on would be much appreciated once again.</div><div><br></div><div>Cheers,</div><div><br></div><div>J<br><br>On Saturday, June 28, 2014 6:54:17 AM UTC-4, Paul Groot wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr"><div><br></div><div>Jay,</div><div><br></div>
<div>You can use the WriteBytes function for this:</div><div><br></div><div><div>Dim arrData(4) As Integer</div><div>arrData(0) = 40</div><div>arrData(1) = 30</div>
<div>arrData(2) = 35</div><div>arrData(3) = 30</div><div>arrData(4) = &H2A</div><div><br></div><div>Serial.WriteBytes arrData</div></div><div><br></div><div>With some additional code you could make a nice function out of this that automatically calculates and adds the checksum value.</div>

<div><br></div><div>Best,</div><div>Paul</div><div><br></div></div><div><br><br><div class="gmail_quote">On 25 June 2014 22:20, Jay Hennessy <span dir="ltr"><<a>tjay.h...@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid"><div dir="ltr">Hi all,<div><br></div><div>Maybe someone can help me with this problem.</div>
<div><br></div><div>I want to send a string to a serial port to control a TMS machine during an EEG experiment. I already know how to send strings using Serial.Write</div>
<div><br></div><div>The problem is that the standards for the TMS machine require the last character of the string to be a check bit. You calculate it by first adding up the hexadecimal equivalents of the other characters then taking the inverse. This is now your check bit or check character added to the end of the string.</div>

<div><br></div><div>example: if i want to send @050</div><div><br></div><div>ascii      hex</div><div><br></div><div>@     =    40</div><div>0       =    30</div><div>5       =     35</div><div>0       =     30</div><div>

<br></div><div>40+30+35+30 = D5</div><div><br></div><div>so the inverse is = 2A</div><div><br></div><div>and 2A in hex is * in ascii</div><div>so I would send the string @050* and everything should work.</div><div><br></div>

<div>The problem is that if my check bit becomes a non-printable ascii character, how should I send it?</div><div><br></div><div>for example my check bit might be 1C in hex which is 'file seperator' in ascii. This isn't a character I can send using Serial.Write in Eprime (at least that I know of).</div>

<div>Can anyone think of a way around this problem?</div><div>I might be able to send bits instead of a string. Is sending bits something Serial.Write can do? can eprime convert things to bits?</div><div><br></div><div>Any help would be appreciated.</div>

<div><br></div><div>Thanks</div><span><font color="#888888"><div><br></div><div>jay</div></font></span></div><span class="HOEnZb"><font color="#888888"><span><font color="#888888">

<p></p>

-- <br>
You received this message because you are subscribed to the Google Groups "E-Prime" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an email to <a>e-prime+u...@<u></u>googlegroups.com</a>.<br>
To post to this group, send email to <a>e-p...@googlegroups.com</a>.<br>
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/e-prime/fb97098b-509e-403b-96a7-909c09c9ef67%40googlegroups.com?utm_medium=email&utm_source=footer" target="_blank">https://groups.google.com/d/<u></u>msgid/e-prime/fb97098b-509e-<u></u>403b-96a7-909c09c9ef67%<u></u>40googlegroups.com</a>.<br>


For more options, visit <a href="https://groups.google.com/d/optout" target="_blank">https://groups.google.com/d/<u></u>optout</a>.<br>
</font></span></font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote></div><span class="HOEnZb"><font color="#888888">

<p></p>

-- <br>
You received this message because you are subscribed to the Google Groups "E-Prime" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="mailto:e-prime+unsubscribe@googlegroups.com" target="_blank">e-prime+unsubscribe@googlegroups.com</a>.<br>
To post to this group, send email to <a href="mailto:e-prime@googlegroups.com" target="_blank">e-prime@googlegroups.com</a>.<br>
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/e-prime/36c2a30d-db0a-48b1-8e64-187a18b92292%40googlegroups.com?utm_medium=email&utm_source=footer" target="_blank">https://groups.google.com/d/msgid/e-prime/36c2a30d-db0a-48b1-8e64-187a18b92292%40googlegroups.com</a>.<br>

For more options, visit <a href="https://groups.google.com/d/optout" target="_blank">https://groups.google.com/d/optout</a>.<br>
</font></span></blockquote></div><br></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups "E-Prime" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an email to <a href="mailto:e-prime+unsubscribe@googlegroups.com">e-prime+unsubscribe@googlegroups.com</a>.<br />
To post to this group, send email to <a href="mailto:e-prime@googlegroups.com">e-prime@googlegroups.com</a>.<br />
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/e-prime/CAKAdR-uCTEG8t3TP3EDfyDAwsZh6KZRXBnghRou-OC796USXVw%40mail.gmail.com?utm_medium=email&utm_source=footer">https://groups.google.com/d/msgid/e-prime/CAKAdR-uCTEG8t3TP3EDfyDAwsZh6KZRXBnghRou-OC796USXVw%40mail.gmail.com</a>.<br />
For more options, visit <a href="https://groups.google.com/d/optout">https://groups.google.com/d/optout</a>.<br />