Tags:
view all tags
%DASHBOARD{ section="dashboard_start" }% %DASHBOARD{ section="banner" image="%PUBURLPATH%/Cosmac/ForthSTM32WB/nucleo-header.jpg" title="Terminal IO (Serial Communication)" titlestyle="color:#F00000;" }% %DASHBOARD{ section="box_start" title="Intro" width="485" height="250"}% ---+ Intro To work with a Forth system you need some kind of a [[https://en.wikipedia.org/wiki/System_console][console]]. A text [[https://en.wikipedia.org/wiki/Computer_terminal#Text_terminals][terminal]] with [[https://en.wikipedia.org/wiki/RS-232][RS-232]] port has been used for this purpose in the past, today PCs have software to emulate terminals but do not have any RS-232 interface. But there are usually USB interfaces instead. The [[https://en.wikipedia.org/wiki/USB_communications_device_class][USB-CDC]] appears as a traditional RS-232 port in your operating system (Linux =/dev/ttyACMx=, Windoze =COMx=). No need to bother with baud rates, handshaking, parity and other awkward things. %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" title="Contents" width="460" height="250"}% %TOC% %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ Terminal-IO Default console is USB-CDC, but if you press button SW2 on reset, the console is redirected to the UART device, see [[https://github.com/spyren/Mecrisp-Cube/blob/master/Forth/cube/mecrisp.s][mecrisp.s]]. If you press button SW1 on reset, the console is redirected to the Bluetooth LE Cable Replacement Service. <pre> emit? ( -- Flag ) Ready to send a character? key? ( -- Flag ) Checks if a key is waiting key ( -- Char ) Waits for and fetches the pressed key emit ( Char -- ) Emits a character hook-emit? ( -- a-addr ) Hooks for redirecting terminal IO on the fly hook-key? hook-key hook-emit uart ( -- ) redirect console to serial interface (UART) cdc ( -- ) redirect console to USB-CDC crs ( -- ) redirect console to BLE CRS </pre> <pre> : ascii ( -- ) 127 32 do i emit loop ; : crs-ascii ( -- ) 127 32 do i crs-emit loop 10 crs-emit / LF ; </pre> %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ USB-CDC Serial Communcation (API) <pre> cdc-emit ( c -- ) Emit one character cdc-key ( -- c ) Receive one character cdc-emit? ( -- ? ) Ready to send a character cdc-key? ( -- ? ) Is there a key press ? </pre> %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ UART Serial Communcation (API) <pre> serial-emit ( c -- ) Emit one character serial-key ( -- c ) Receive one character serial-emit? ( -- ? ) Ready to send a character serial-key? ( -- ? ) Is there a key press ? baudrate ( u -- ) set baud rate (e.g. 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, <b>115200</b>) paritybit ( u -- ) set parity bit <b>0 none</b>, 1 odd, 2 even, 3 mark, 4 space wordlength ( u -- ) set word length 7, <b>8</b>, 9 (including parity) stopbits ( u -- ) set stop bits <b>0 1 bit</b>, 1 1.5 bit, 2 2 bit </pre> %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="300" }% ---+ BLE Cable Replacement Serial Communcation (API) <pre> crs-emit ( c -- ) Emit one character crs-key ( -- c ) Receive one character crs-emit? ( -- ? ) Ready to send a character crs-key? ( -- ? ) Is there a key press ? </pre> %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="dashboard_end" }% -- %USERSIG{PeterSchmid - 2020-04-20}% ---++ Comments %COMMENT%
Edit
|
Attach
|
Watch
|
P
rint version
|
H
istory
:
r28
|
r9
<
r8
<
r7
<
r6
|
B
acklinks
|
V
iew topic
|
Raw edit
|
More topic actions...
Topic revision: r7 - 2020-05-19
-
PeterSchmid
Home
Site map
Cosmac web
MRR web
MecrispCube web
SuperRandonnee web
TWiki web
Ursula web
Velo web
MecrispCube Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Edit
Attach
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback