Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 07:05 20 Sep 2026 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Micromite serial issues

Author Message
shoots

Newbie

Joined: 31/07/2011
Location: Australia
Posts: 32
Posted: 02:55pm 01 Jun 2019
Copy link to clipboard 
Print this post

Hi,

I am working with a micromite with an LCD backpack.
Can anyone suggest where I am going wrong here please. I am trying to send a stream of data to an external device. One of streams I want to send out is, with ascii character and hex value in brackets) :
C (0x43) U (0x55) 0 (0x30) 7 (0x37) 23 (0x17)

Checking with my logic probe shows what is actually going out is:
6 (0x36) 7 (0x37) 8 (0x38) 5 (0x35) 4 (0x35) 8 (0x38) 5 (0x35) 5 (0x35) 2 (0x32) 3 (0x33)
The receiver is not able to handle this as it expects the former stream of 5 bytes of data not the 10 bytes being sent. It is like each byte is being split into two.
My code related to serial tx:

dim integer aByte(9)=(&H52,&H30,&H30,&H31,&H42,&H35,&H38,&H44,&H43,&H17) '7000rpm
dim integer uartselect(4)=(&H43,&H55,&H30,&H37,&H17)
dim integer increment
open "com1: 115200, 512" as #5
for increment=0 to 4
print #5; str$(uartselect(increment));
next

Thank you for any suggestions.
Peter
 
twofingers

Guru

Joined: 02/06/2014
Location: Germany
Posts: 1772
Posted: 04:03pm 01 Jun 2019
Copy link to clipboard 
Print this post

Hi Peter
  shoots said  
One of streams I want to send out is, with ascii character and hex value in brackets) :
C (0x43) U (0x55) 0 (0x30) 7 (0x37) 23 (0x17)


hmm, this code gives me
Dim integer uartselect(4)=(&H43,&H55,&H30,&H37,&H17)
'open "com1: 115200, 512" as #5
Print "Str$"
For increment=0 To 4
Print Str$(uartselect(increment)),increment
Next
Print
Print "Chr$"
For increment=0 To 4
Print Chr$(uartselect(increment)),increment
Next
Print
Print "Hex$"
For increment=0 To 4
Print Hex$(uartselect(increment)),increment
Next
Print

End


this output:


Str$
67 0
85 1
48 2
55 3
23 4

Chr$
C 0
U 1
0 2
7 3
4

Hex$
43 0
55 1
30 2
37 3
17 4



edit:
Maybe, if you want to send bytes (uartselect()) then you should replace
Print #5; Str$(uartselect(increment))

with
Print #5; Chr$(uartselect(increment))


  Quote  Checking with my logic probe shows what is actually going out is:
6 (0x36) 7 (0x37) 8 (0x38) 5 (0x35) 4 (0x35) 8 (0x38) 5 (0x35) 5 (0x35) 2 (0x32) 3 (0x33)

That's exactly what you are sending with
Print #5; Str$(uartselect(increment)).

67, 85, 48, 55, 23.

MichaelEdited by twofingers 2019-06-03
‚My name is Ozymandias, king of kings
Look on my works, ye Mighty, and despair!‘
Nothing beside remains. Round the decay
Of that colossal wreck, boundless and bare
The lone and ...
 
shoots

Newbie

Joined: 31/07/2011
Location: Australia
Posts: 32
Posted: 11:53pm 01 Jun 2019
Copy link to clipboard 
Print this post

Hi Michael,

Thank you for that. Spot on! Changed to Chr$ and it worked immediately. A careful reread of the manual and I understand the different- Chr$ returns a ONE character string.

Cheers,
Peter
 
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026