Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 15:40 06 Jul 2025 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 : Programming the Micromite in Linux

Author Message
Spacedementia87
Newbie

Joined: 03/08/2016
Location: United Kingdom
Posts: 26
Posted: 03:31am 05 Oct 2016
Copy link to clipboard 
Print this post

Hi everyone.

I am super confused.

I have used an arduino Nano to successfully upload the micromite firmware to the chip.

However now comes the task of talking to the chip.

So i pulled out any connections and connected the TXD and RXD to the relevant pins on the chip along with the 3.3v and the gnd with the capacitors.

Now I don't know what to do.

I am on linux and MMEdit only has a windows version. The ports are listed as COM1 etc when run in wine. So that is now good.

When i open minicom I get a terminal window that looks like this:

Welcome to minicom 2.7

OPTIONS: I18n
Compiled on Feb 7 2016, 13:37:27.
Port /dev/ttyUSB0, 14:18:02

Press CTRL-A Z for help on special keys



Now what?

How do I actually communicate with the micromite I have just set up?
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10209
Posted: 06:15am 05 Oct 2016
Copy link to clipboard 
Print this post

What sort of Micromite?

The 28-pin (or 44-pin) will need a USB/UART to connect between the Micromite and the computer.

The 64 or 100-pin can connect directly to the computer's USB port but can also be connected with a USB/UART

A suitable USB/UART would be something like this
 
Spacedementia87
Newbie

Joined: 03/08/2016
Location: United Kingdom
Posts: 26
Posted: 07:22am 05 Oct 2016
Copy link to clipboard 
Print this post

  matherp said   What sort of Micromite?

The 28-pin (or 44-pin) will need a USB/UART to connect between the Micromite and the computer.

The 64 or 100-pin can connect directly to the computer's USB port but can also be connected with a USB/UART

A suitable USB/UART would be something like this


It is a 28 pin. But I am using the arduino nano. Is that on acceptable?
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10209
Posted: 07:34am 05 Oct 2016
Copy link to clipboard 
Print this post

  Quote  But I am using the arduino nano. Is that on acceptable?


To use the Nano as a USB/UART you would either have to disconnect the output of the USB chip from the Arduino so you could connect to the Micromite, or write/find a program for the Arduino that acts as a serial forwarder.

This isn't really a sensible approach - better to invest in a proper USB/UART
 
Spacedementia87
Newbie

Joined: 03/08/2016
Location: United Kingdom
Posts: 26
Posted: 09:38am 05 Oct 2016
Copy link to clipboard 
Print this post

Ok fair enough.

I was under the impression I could do it all with the nano.

I'll try and get hold of a usb/uart
 
WhiteWizzard
Guru

Joined: 05/04/2013
Location: United Kingdom
Posts: 2932
Posted: 04:15pm 05 Oct 2016
Copy link to clipboard 
Print this post

  Spacedementia87 said   I'll try and get hold of a usb/uart



If you contact me I can help you out with this
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2429
Posted: 02:10am 06 Oct 2016
Copy link to clipboard 
Print this post

  matherp said  
  Quote  But I am using the arduino nano. Is that on acceptable?


To use the Nano as a USB/UART you would either have to disconnect the output of the USB chip from the Arduino so you could connect to the Micromite, or write/find a program for the Arduino that acts as a serial forwarder.

This isn't really a sensible approach - better to invest in a proper USB/UART


not quite - if you jumper the RST pin of the nano to ground, the 328p processor will be held in reset (all pins hi-Z) and you can access the USB to serial bridge (CH340G) directly on the pins labelled D0 and D1. note that this will be 5v level TTL, while the micromite requires 3v3 levels. using 2k2 series resistors in both serial data lines will solve this mismatch. use resistors in both as there is a 50/50 chance you'll get RxD and TxD connected up the wrong way round on the first try.

i've not tried using a nano as just a bridge, but in theory it will work. but as others have said, when a CP2102 serial bridge from ebay costs just a couple of dollars that becomes the wiser approach.


cheers,
rob :-)
 
Quazee137

Guru

Joined: 07/08/2016
Location: United States
Posts: 593
Posted: 06:08pm 07 Oct 2016
Copy link to clipboard 
Print this post

This is MyWork.sh

#-------------------------------------------------------
#!/bin/bash

gnome-terminal -t USB0, -e "minicom --color=on ttyUSB0"
gnome-terminal -t USB1, -e "minicom --color=on ttyUSB1"
gnome-terminal -t USB2, -e "minicom --color=on ttyUSB2"
gnome-terminal -t USB3, -e "minicom --color=on ttyUSB3"
gnome-terminal -t USB4, -e "minicom --color=on ttyUSB4"
gnome-terminal -t USB5, -e "minicom --color=on ttyUSB5"

x-tile g 2 3

play /home/papa/Sounds/BeatPlucker.ogg
read $key

#---------------------------------------------------------

And here is .minirc.ttyUSB0 the rest are the same except the pu port.
Each was done sudo minicom -s then saved as ttyUSBx

# Machine-generated file - use setup menu in minicom to change parameters.

pu port /dev/ttyUSB0
pu baudrate 38400
pu updir MMBasic/work
pu downdir MMBasic/work
pu rtscts No
pu mfcolor BLACK
pu mbcolor CYAN
pu tfcolor BLACK
pu tbcolor WHITE
pu sfcolor RED
pu sbcolor CYAN
pu macenab No
pu askdndir Yes
pu linewrap Yes

I use a powered 7 USB hub with switches and
can power down the MicroMite I'm work with.

each MicroMite has

print "it's name and the program name"

makes it easy to who and what is where.
 
piclover
Senior Member

Joined: 14/06/2015
Location: France
Posts: 134
Posted: 07:35am 10 Oct 2016
Copy link to clipboard 
Print this post

To upload/download programs to/from the Micromite under Linux, I'm using AUTOSAVE/LIST ALL with either "Moni" (A Tcl/Tk program, available from http://www.rolf-schroedter.de/moni/ ), or the good old Nedit editor (an OpenMotif based text editor https://sourceforge.net/projects/nedit/ ) with a couple of auxiliary Python programs (I don't remember where I got them from on the Web...) that I slightly modified to fit the Micromite needs.

Here are the sendserial and grabserial auxiliary programs:

#!/usr/bin/env python
#
# sendserial - program to write to a serial port data coming from to stdin

MAJOR_VERSION=1
MINOR_VERSION=0
REVISION=0

import os, sys
import getopt
import serial
import time
import re

cmd = os.path.basename(sys.argv[0])
verbose = 0

def vprint(message):
if verbose:
print(message)

def usage(rcode):
print("""%s : Serial line reader
Usage: %s [options] <config_file>
options:
-h, --help Print this message
-d, --device=<devpath> Set the device to read (default '/dev/ttyS0')
-b, --baudrate=<val> Set the baudrate (default 115200)
-w, --width=<val> Set the data bit width (default 8)
-p, --parity=<val> Set the parity (default N)
-s, --stopbits=<val> Set the stopbits (default 1)
-x, --xonxoff Enable software flow control (default off)
-r, --rtscts Enable RTS/CTS flow control (default off)
-f, --force-reset Force pyserial to reset device parameters
-t, --timeout=<secs> End the program after the specified seconds have
elapsed.
-c, --command=<cmd> Send a command to the port before sending
-k, --breakcmd=<cmd> Send a break and then a command to the port before sending
-q, --quitpat=<pat> Specify a regular expression pattern to end the
program. Works mid-line.
-i, --input=<name> Input file to read data from.
-v, --verbose Show verbose runtime messages
-V, --version Show version number and exit
""" % (cmd, cmd))
sys.exit(rcode)

def device_exists(device):
try:
from serial.tools import list_ports

for port in list_ports.comports():
if port[0] == device:
return True

return False
except:
return os.path.exists(device)

def main():
global verbose

# parse the command line options
try:
opts, args = getopt.getopt(sys.argv[1:],
"hd:b:w:p:s:xrfc:k:et:i:vVq:", [
"help",
"device=",
"baudrate=",
"width=",
"parity=",
"stopbits=",
"xonxoff",
"rtscts",
"force-reset",
"command=",
"breakcmd=",
"eof",
"timeout=",
"input=",
"verbose",
"version",
"quitpat="])
except:
# print help info and exit
print("Error parsing command line options")
usage(2)

sd = serial.Serial()
sd.port="/dev/ttyS0"
sd.baudrate=115200
sd.bytesize=serial.EIGHTBITS
sd.parity=serial.PARITY_NONE
sd.stopbits=serial.STOPBITS_ONE
sd.xonxoff=False
sd.rtscts=False
sd.dsrdtr=False
sd.timeout=0
force = False
quitpat = ''
sendeof=0
timeout = 0
inputfile = None
command = ""
sendbreak = 0

for opt, arg in opts:
if opt in ["-h", "--help"]:
usage(0)
if opt in ["-d", "--device"]:
device = arg
if not device_exists(device):
print("Error: serial device '%s' does not exist" % device)
sd.close()
usage(2)
sd.port = device
if opt in ["-b", "--baudrate"]:
baud = int(arg)
if baud not in sd.BAUDRATES:
print("Error: invalid baud rate '%d' specified" % baudrate)
print("Valid baud rates are: %s" % str(sd.BAUDRATES))
sd.close()
sys.exit(3)
sd.baudrate = baud
if opt in ["-p", "--parity"]:
par = arg.upper()
if par not in sd.PARITIES:
print("Error: invalid parity '%s' specified" % par)
print("Valid parities are: %s" % str(sd.PARITIES))
sd.close()
sys.exit(3)
sd.parity = par
if opt in ["-w", "--width"]:
width = int(arg)
if width not in sd.BYTESIZES:
print("Error: invalid data bit width '%d' specified" % width)
print("Valid data bit widths are: %s" % str(sd.BYTESIZES))
sd.close()
sys.exit(3)
sd.bytesize = width
if opt in ["-s", "--stopbits"]:
stop = int(arg)
if stop not in sd.STOPBITS:
print("Error: invalid stopbits '%d' specified" % stop)
print("Valid stopbits are: %s" % str(sd.STOPBITS))
sd.close()
sys.exit(3)
sd.stopbits = stop
if opt in ["-c", "--command"]:
command = arg
if opt in ["-k", "--breakcmd"]:
command = arg
sendbreak = True
if opt in ["-x", "--xonxoff"]:
sd.xonxoff = True
if opt in ["-r", "--rtscts"]:
sd.rtscts = True
if opt in ["-f", "--force-set"]:
force = True
if opt in ["-q", "--quitpat"]:
quitpat=arg
if opt in ["-e", "--eof"]:
sendeof = True
if opt in ["-t", "--timeout"]:
endstr=arg
try:
timeout = time.time()+float(endstr)
except:
print("Error: invalid timeout %s specified" % arg)
sd.close()
sys.exit(3)
if opt in ["-i", "--input"]:
inputfile = arg
if opt in ["-v", "--verbose"]:
verbose=1
if opt in ["-V", "--version"]:
print("grabserial version %d.%d.%d" % (MAJOR_VERSION, MINOR_VERSION, REVISION))
sd.close()
sys.exit(0)

# if verbose, show what our settings are
vprint("Opening serial port %s" % sd.port)
vprint("%d:%d%s%s:xonxoff=%d:rtscts=%d" % (sd.baudrate, sd.bytesize,
sd.parity, sd.stopbits, sd.xonxoff, sd.rtscts))
if timeout:
vprint("Program will end in %s seconds" % endstr)
if quitpat:
vprint("Instant pattern '%s' to exit program" % quitpat)

if inputfile:
try:
inpt = open(inputfile, "rb")
except IOError:
print("Can't open input file '%s'" % inputfile)
sys.exit(1)
vprint("Readind data from '%s'" % inputfile)

curline = ""
vprint("Use Control-C to stop...")

if force:
# pyserial does not reconfigure the device if the settings
# don't change from the previous ones. This causes issues
# with (at least) some USB serial converters
toggle = sd.xonxoff
sd.xonxoff = not toggle
sd.open()
sd.close()
sd.xonxoff = toggle
sd.open()
sd.flushInput()
sd.flushOutput()

if sendbreak:
sd.write("\x03")
sd.flush()

if command:
sd.write(command + "\n")
sd.flush()

gotcr = 0
# read from the serial port until something stops the program
while(1):
try:
if inputfile:
x = inpt.read(1)
else:
x = sys.stdin.read(1)

# see if we're supposed to stop yet
if timeout and time.time()>timeout:
vprint("Timeout reached")
break

# if we didn't read anything, exit
if len(x)==0:
break

if x=="\r":
gotcr = True

# send data to port
if x=="\n":
curline = ""
if gotcr:
sd.write(x)
gotcr = 0
else:
sd.write("\r\n")
else:
sd.write(x)
curline += x
sd.flush()

# Exit the loop if quitpat matches
if quitpat and re.search(quitpat, curline):
vprint("Quit pattern found")
break

except:
break

if sendeof:
sd.write("\x1a")
sd.flush()

sd.close()

if inputfile:
inpt.close()

main()



#!/usr/bin/env python
#
# grabserial - program to read a serial port and send the data to stdout
#
# Copyright 2006,2015 Sony Corporation
#
# This program is provided under the Gnu General Public License (GPL)
# version 2 ONLY. This program is distributed WITHOUT ANY WARRANTY.
# See the LICENSE file, which should have accompanied this program,
# for the text of the license.
#
# 2006-09-07 by Tim Bird <tim.bird@sonymobile.com>
#
# To do:
# * buffer output chars??
#
# CHANGELOG:
# 2016.04.23 - Version 1.8.1b - added the -k/--breakcmd option
# 2015.04.23 - Version 1.8.1 - remove instructions for applying LICENSE text
# to new files, and add no-warranty language to grabserial.
# 2015.03.10 - Version 1.8.0 - add -o option for saving output to a file
# add -T option for absolute times. Both contributed by ramaxlo
# 2015.03.10 - Version 1.7.1 - add line feed to instantpat result line
# 2014.09.28 - Version 1.7.0 - add option for force reset for USB serial
# contributed by John Mehaffey <mehaf@gedanken.com>
# 2014.01.07 - Version 1.6.0 - add option for exiting based on a
# mid-line pattern (quitpat). Simeon Miteff <simeon.miteff@gmail.com>
# 2013.12.19 - Version 1.5.2 - verify Windows ports w/ serial.tools.list_ports
# (thanks to Yegor Yefromov for the idea and code)
# 2013.12.16 - Version 1.5.1 - Change my e-mail address
# 2011.12.19 - Version 1.5.0 - add options for mid-line time capture
# (instantpat) and base time from launch of program instead of
# first char seen (launchtime) - contributed by Kent Borg
# 2011-09-24 - better time output and time delta
# Constantine Shulyupin <const@makelinux.com>
# 2008-06-02 - Version 1.1.0 add support for sending a command to
# the serial port before grabbing output

MAJOR_VERSION=1
MINOR_VERSION=8
REVISION=1

import os, sys
import getopt
import serial
import time
import re

cmd = os.path.basename(sys.argv[0])
verbose = 0

def vprint(message):
if verbose:
print(message)

def usage(rcode):
print("""%s : Serial line reader
Usage: %s [options] <config_file>
options:
-h, --help Print this message
-d, --device=<devpath> Set the device to read (default '/dev/ttyS0')
-b, --baudrate=<val> Set the baudrate (default 115200)
-w, --width=<val> Set the data bit width (default 8)
-p, --parity=<val> Set the parity (default N)
-s, --stopbits=<val> Set the stopbits (default 1)
-x, --xonxoff Enable software flow control (default off)
-r, --rtscts Enable RTS/CTS flow control (default off)
-f, --force-reset Force pyserial to reset device parameters
-e, --endtime=<secs> End the program after the specified seconds have
elapsed.
-c, --command=<cmd> Send a command to the port before reading
-k, --breakcmd=<cmd> Send a break and then a command to the port before reading
-t, --time Print time for each line received. The time is
when the first character of each line is
received by %s
-T, --systime Print system time for each line received. The time
is the absolute local time when the first character
of each line is received by %s
-m, --match=<pat> Specify a regular expression pattern to match to
set a base time. Time values for lines after the
line matching the pattern will be relative to
this base time.
-i, --instantpat=<pat> Specify a regular expression pattern to have its time
reported at end of run. Works mid-line.
-q, --quitpat=<pat> Specify a regular expression pattern to end the
program. Works mid-line.
-l, --launchtime Set base time from launch of program.
-o, --output=<name> Output data to the named file.
-v, --verbose Show verbose runtime messages
-V, --version Show version number and exit

Ex: %s -e 30 -t -m "^Linux version.*"
This will grab serial input for 30 seconds, displaying the time for
each line, and re-setting the base time when the line starting with
"Linux version" is seen.
""" % (cmd, cmd, cmd, cmd, cmd))
sys.exit(rcode)

def device_exists(device):
try:
from serial.tools import list_ports

for port in list_ports.comports():
if port[0] == device:
return True

return False
except:
return os.path.exists(device)


def main():
global verbose

# parse the command line options
try:
opts, args = getopt.getopt(sys.argv[1:],
"hli:d:b:w:p:s:xrfc:k:tTm:e:o:vVq:", [
"help",
"launchtime",
"instantpat=",
"device=",
"baudrate=",
"width=",
"parity=",
"stopbits=",
"xonxoff",
"rtscts",
"force-reset",
"command=",
"breakcmd=",
"time",
"systime",
"match=",
"endtime=",
"output=",
"verbose",
"version",
"quitpat="])
except:
# print help info and exit
print("Error parsing command line options")
usage(2)

sd = serial.Serial()
sd.port="/dev/ttyS0"
sd.baudrate=115200
sd.bytesize=serial.EIGHTBITS
sd.parity=serial.PARITY_NONE
sd.stopbits=serial.STOPBITS_ONE
sd.xonxoff=False
sd.rtscts=False
sd.dsrdtr=False
# specify a read timeout of 1 second
sd.timeout=1
force = False
show_time = 0
show_systime = 0
basepat = ""
instantpat = ''
quitpat = ''
basetime = 0
instanttime = None
endtime = 0
outputfile = None
command = ""
sendbreak = 0

for opt, arg in opts:
if opt in ["-h", "--help"]:
usage(0)
if opt in ["-d", "--device"]:
device = arg
if not device_exists(device):
print("Error: serial device '%s' does not exist" % device)
sd.close()
usage(2)
sd.port = device
if opt in ["-b", "--baudrate"]:
baud = int(arg)
if baud not in sd.BAUDRATES:
print("Error: invalid baud rate '%d' specified" % baudrate)
print("Valid baud rates are: %s" % str(sd.BAUDRATES))
sd.close()
sys.exit(3)
sd.baudrate = baud
if opt in ["-p", "--parity"]:
par = arg.upper()
if par not in sd.PARITIES:
print("Error: invalid parity '%s' specified" % par)
print("Valid parities are: %s" % str(sd.PARITIES))
sd.close()
sys.exit(3)
sd.parity = par
if opt in ["-w", "--width"]:
width = int(arg)
if width not in sd.BYTESIZES:
print("Error: invalid data bit width '%d' specified" % width)
print("Valid data bit widths are: %s" % str(sd.BYTESIZES))
sd.close()
sys.exit(3)
sd.bytesize = width
if opt in ["-s", "--stopbits"]:
stop = int(arg)
if stop not in sd.STOPBITS:
print("Error: invalid stopbits '%d' specified" % stop)
print("Valid stopbits are: %s" % str(sd.STOPBITS))
sd.close()
sys.exit(3)
sd.stopbits = stop
if opt in ["-c", "--command"]:
command = arg
if opt in ["-k", "--breakcmd"]:
command = arg
sendbreak = True
if opt in ["-x", "--xonxoff"]:
sd.xonxoff = True
if opt in ["-r", "--rtscts"]:
sd.rtscts = True
if opt in ["-f", "--force-set"]:
force = True
if opt in ["-t", "--time"]:
show_time=1
show_systime=0
if opt in ["-T", "--systime"]:
show_time=0
show_systime=1
if opt in ["-m", "--match"]:
basepat=arg
if opt in ["-i", "--instantpat"]:
instantpat=arg
if opt in ["-q", "--quitpat"]:
quitpat=arg
if opt in ["-l", "--launchtime"]:
print('setting basetime to time of program launch')
basetime = time.time()
if opt in ["-e", "--endtime"]:
endstr=arg
try:
endtime = time.time()+float(endstr)
except:
print("Error: invalid endtime %s specified" % arg)
sd.close()
sys.exit(3)
if opt in ["-o", "--output"]:
outputfile = arg
if opt in ["-v", "--verbose"]:
verbose=1
if opt in ["-V", "--version"]:
print("grabserial version %d.%d.%d" % (MAJOR_VERSION, MINOR_VERSION, REVISION))
sd.close()
sys.exit(0)

# if verbose, show what our settings are
vprint("Opening serial port %s" % sd.port)
vprint("%d:%d%s%s:xonxoff=%d:rtscts=%d" % (sd.baudrate, sd.bytesize,
sd.parity, sd.stopbits, sd.xonxoff, sd.rtscts))
if endtime:
vprint("Program will end in %s seconds" % endstr)
if show_time:
vprint("Printing timing information for each line")
if show_systime:
vprint("Printing absolute timing information for each line")
if basepat:
vprint("Matching pattern '%s' to set base time" % basepat)
if instantpat:
vprint("Instant pattern '%s' to set base time" % instantpat)
if quitpat:
vprint("Instant pattern '%s' to exit program" % quitpat)
if outputfile:
try:
out = open(outputfile, "wb")
except IOError:
print("Can't open output file '%s'" % outputfile)
sys.exit(1)
vprint("Saving data to '%s'" % outputfile)

prev1 = 0
linetime = 0
newline = 1
curline = ""
vprint("Use Control-C to stop...")

if force:
# pyserial does not reconfigure the device if the settings
# don't change from the previous ones. This causes issues
# with (at least) some USB serial converters
toggle = sd.xonxoff
sd.xonxoff = not toggle
sd.open()
sd.close()
sd.xonxoff = toggle
sd.open()
sd.flushInput()
sd.flushOutput()

if sendbreak:
sd.write("\x03")
sd.flush()
while(1):
try:
if len(sd.read())==0:
break
except:
break

if command:
sd.write(command + "\n")
sd.flush()

# read from the serial port until something stops the program
while(1):
try:
# read for up to 1 second
x = sd.read()

# see if we're supposed to stop yet
if endtime and time.time()>endtime:
break

# if we didn't read anything, loop
if len(x)==0:
continue

# ignore carriage returns
if x=="\r":
continue

# set basetime to when first char is received
if not basetime:
basetime = time.time()

if show_time and newline:
linetime = time.time()
elapsed = linetime-basetime
delta = elapsed-prev1
msg ="[%4.6f %2.6f] " % (elapsed, delta)
sys.stdout.write(msg)
if outputfile:
out.write(msg)
prev1 = elapsed
newline = 0

if show_systime and newline:
linetime = time.time()
linetimestr = time.strftime(
'%y-%m-%d %H:%M:%S',
time.localtime(linetime))
elapsed = linetime-basetime
delta = elapsed-prev1
msg = "[%s %2.6f] " % (linetimestr, delta)
sys.stdout.write(msg)
if outputfile:
out.write(msg)
prev1 = elapsed
newline = 0

# FIXTHIS - should I buffer the output here??
sys.stdout.write(x)
if outputfile:
out.write(x)
curline += x

# watch for patterns
if instantpat and not instanttime and \
re.search(instantpat, curline):
# instantpat in curline:
instanttime = time.time()

# Exit the loop if quitpat matches
if quitpat and re.search(quitpat, curline):
break

if x=="\n":
newline = 1
if basepat and re.match(basepat, curline):
basetime = linetime
elapsed = 0
prev1 = 0
curline = ""
sys.stdout.flush()
if outputfile:
out.flush()
except:
break

sd.close()
if instanttime:
instanttime_str = '%4.6f' % (instanttime-basetime)
msg = '\nThe instantpat: "%s" was matched at %s\n' % \
(instantpat, instanttime_str)
sys.stdout.write(msg)
sys.stdout.flush()
if outputfile:
out.write(msg)
out.flush()

if outputfile:
out.close()

main()


And here are the commands to add to Nedit's Shell menu ("Preferences" -> "Default Settings" -> "Customize Menus" -> "Shell Menu")

"Load program from Micromite":

grabserial -d /dev/ttyS0 -b 38400 -k "LIST ALL" -q "^> " | tail -n +2 | head -n -1


"Save program to Micromite":

sendserial -d /dev/ttyS0 -b 38400 -k "AUTOSAVE" -e


Finally, for Nedit users, here is the syntax hilighting definition block I'm using (for capitalized letters MMBASIC commands/functions), to add to the "nedit.highlightPatterns:" section of ~/.nedit/nedit.rc:

MMBASIC:1:0{\n\
string constant:"""":"""":"\\n":String::\n\
comment:"(REM|').*$":::Comment::\n\
label:".+:[ \\t]*$":::Label::\n\
constants:"<(?:MM\\.VER|MM\\.DEVICE\\$|MM\\.WATCHDOG|MM\\.I2C|MM\\.ONEWIRE|MM\\.HRES|MM\\.VRES|MM\\.FONTHEIGHT|MM\\ .FONTWIDTH|MM\\.SPIOPEN|MM\\.ERRNO|MM\\.ERRMSG$|BLACK|CYAN|WHITE|RED|GREEN|BLUE|YELLOW|BROWN|MAGENTA|GRAY)>":::Ada Attributes::\n\
flow control:"<(?:DO|WHILE|LOOP|UNTIL|FOR|TO|STEP|NEXT|EXIT|ON ERROR (ABORT|CLEAR|IGNORE|SKIP)|ON|GOSUB|GOTO|KEY|IF|THEN|ELSEIF|ELSE|ENDIF|END|SELECT|CASE|IRETURN|RETURN|RUN|CONTINUE|CFUNCT ION|FUNCTION|SUB|DEFINEFONT|NEW|ERROR)>":::Keyword::\n\
declaration:"<(?:[Cc](ONST|onst)|[Dd](IM|im)|[Aa][Ss] ([Ff](LOAT|loat)|[Ii](NTEGER|nteger)|[Ss](TRING|tring))|[Ff](LOAT|loat)|[Ii](NTEGER|nteger)|[Ss](TRING|tring)|[Ll](ENGTH|ength)|[Ll](OCAL|ocal))>":::Identifier2::\n\
pin:"<(?:[Pp](IN|in))>\\(":"\\)"::Operator::\n\
keyword:"<(?:AUTOSAVE|RBOX|BOX|CIRCLE|CLEAR|CLOSE|CLS|COLOUR|CPU|SLEEP|DATA|DHT22|DS18B20|EDIT|ERASE|FONT|GUI BITMAP|GUI CALIBRATE|GUI TEST TOUCH|GUI TEST LCDPANEL|HUMID|INPUT|IR|SEND|KEYPAD|LET|LCD INIT|LCD CMD|LCD|LINE|LIST|LOCAL|MEMORY|OPEN|CLOSE|OPTION CASE|OPTION PIN|OPTION TOUCH|OPTION|CLOCKTRIM|CONSOLE|DEFAULT|DISPLAY|EXPLICIT|LCDPANEL|TAB|PAUSE|PIXEL|POKE|PORT|PRINT|PULSE|PWM|RANDOMIZE|VAR (READ|RESTORE|SAVE)|READ|RESTORE|SAVE|RTC|SETTIME|SETREG|GETTIME|GETREG|SERVO|SETPIN|SETTICK|TEMPR START|TEXT|TROFF|TRON|WATCHDOG|XMODEM|I2C|SPI OPEN|SPI WRITE|SPI READ|SPI CLOSE|CMD|WRITE|ONEWIRE|RESET)>":::Identifier1::\n\
functions:"<(?:ABS|ASC|ATN|BIN\\$|CHR\\$|CINT|COS|DEG|DISTANCE|EOF|EXP|FIX|HEX\\$|INPUT\\$|INSTR|INT|LEFT\\$|LEN|LO C|LOF|LOG|LCASE\\$|MID\\$|OCT\\$|PEEK|PORT|POS|PULSIN|RAD|RIGHT\\$|RGB|RND|SGN|SIN|SPACE\\$|SPI|SQR|STR\\$|STRING\\$|TAB |TAN|TEMPR|TOUCH|UCASE\\$|VAL|ACOS|ASIN)>":::Operator::\n\
options:"<(?:INTL|INTH|INTB|DOUT|DIN|OFF|AIN|FIN|PIN|CIN|DOUT|PULLUP|PULLDOWN|ILI9341|RLANDSCAPE|LANDSCAPE|RPORTRAI T|PORTRAIT|WORD|BYTE|VARTBL|VARADDR|VAR|CFUNADDR|PROGMEM)>":::Pointer::\n\
variable:"<(?:[Dd](ATE|ate)\\$|[Tt](IME|ime)\\$|[Tt](IMER|imer))>":::Storage Type::\n\
operator:"<(?:[Aa](ND|nd)|[Nn](OT|ot)|[Xx](OR|or)|[Oo][Rr]|[Mm](OD|od)|[Pp][Ii]|[Pp](OS|os)|[Ii](NKEY|nkey)\\$)>":::Operator::\n\
constant:"&<(?:[Bb][01]+|[Oo][0-7]+|[Hh][\\dA-Fa-f]+)>":::Numeric Const::\n\
}\n\


With this, you can easily compete with any Windoze utility.

PS: I almost forgot... For program editing, using the Micromite's built-in full screen editor, I am using PuTTY (the trick to get it to play nice being to use the "ESC[n~" emulation for the function keys, in the Terminal -> Keyboard settings of PuTTY).Edited by piclover 2016-10-11
 
sagt3k

Guru

Joined: 01/02/2015
Location: Italy
Posts: 313
Posted: 10:45am 10 Oct 2016
Copy link to clipboard 
Print this post

Hi to everybody
If you're using Linux + Micromite through UART port or /dev/ttyUSBx You can Install "ser2net". After you can edit "/etc/ser2net.conf" and insert this for example:
3031:raw:0:/dev/ttyUSB0:38400,8DATABITS,NONE,1STOPBIT

Later you can use "MicromiteLab " also under Wine and MicromiteLab with Wine.
With MicromiteLab you can use "TCPconnection" with "IP:PORT" for example "127.0.0.1:3031" and use all its features
Thanks
 
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 2025