On Apr 26, 2007, at 7:25 AM, [EMAIL PROTECTED] wrote:

> On Apr 26, 2007, at 09:01 UTC, Gregory Omond wrote:
>
>> Sorry that I am such a "basic newbie"... I have dabbled a bit in C
>> and assembler and Delphi on PC, But now I am in Mac land (sick of
>> viruses).
>
> Welcome!  :)
>
>> All messages constructed according to the following format:
>>
>> Byte    Contents
>> 0       Start-Mark (SOH,01hex)
>> 1       Destination Address
>> 2       Source Address
>> 3       Message-Code
>> 4       Data-Length
>> 5       Data-Field(1)
>> N+4     Data-Field(N)
>> N+5     CRC-Field(1) (MS Byte)
>> N+6     CRC-Field(2)
>> N+7     End-Mark(EOT, 04hex)
>
> The easiest way to construct something like this is to use a
> MemoryBlock.  Something like this:
>
>   Dim mb as New MemoryBlock( data.LenB + 8 )
>   mb.Byte(0) = &h01   // SOH
>   mb.Byte(1) = destAddress
>   mb.Byte(2) = srcAddress
>   mb.Byte(3) = messageCode
>   mb.Byte(4) = data.LenB
>   mb.StringValue(5,data.LenB) = data
>   mb.Byte(data.LenB+5) = crcField1
>   mb.Byte(data.LenB+6) = crcField2
>   mb.Byte(data.LenB+7) = &h04   // EOT
>   Serial1.Write mb
>
> That last step works because RB implicitly converts a MemoryBlock to a
> string (and vice versa).  So even though Serial.Write expects a string,
> you can pass it a MemoryBlock and it just sends the whole contents
> thereof.
>
>> I tried the following:
>>
>> Sub Action
>>
>>     Serial1.SerialPort.OutputDriverName.Encoding.variant 0x00
>
> I'm not sure what you were trying to accomplish with this.  It's not
> needed anyway.
>
>>     Serial1.Write 0x01
>
> 0x01 isn't RB syntax; in RB that'd be &h01.  But that won't work with
> Serial.Write, because that needs a string, not an integer.  To do this
> byte by byte, you would do:
>
>    Serial1.Write ChrB(&h01)
>
> ChrB converts an integer 0-255 to the corresponding string containing
> that byte.  But the MemoryBlock technique above is much simpler in this
> case.
>
> Best,
> - Joe
>
> --
> Joe Strout -- [EMAIL PROTECTED]
>
>
Wow, I just leaned something I can use. Joe's process is much more 
compact than
mine. I'd never used MemoryBlocks but will soon.

Jim

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to