Pour envoyer une variable 8 bits entre un ordinateur et un microcontrôleur Basic Stamp, on utilise le protocole RS232 (souvent appelé RS-323 par erreur) via un port série COM ou un convertisseur USB-série. Le RS232 est un protocole asynchrone, comparable à MIDI, RS485 ou TCP/IP : chaque appareil possède sa propre horloge interne pour synchroniser la lecture des 1 et des 0 sans signal d’horloge séparé.
Pour assurer une communication fiable entre le PC et la Basic Stamp, il est indispensable de définir un débit de communication approprié (appelé baud rate en anglais). Le standard couramment utilisé est 9600 bits/seconde, format 8 bits, sans parité, inversion de signal. En langage PBasic, cette configuration correspond à la valeur 16468 (voir page 279 du guide Basic Stamp). À ce débit, on transfère environ une octet – ou la lettre “A” – par milliseconde, ce qui est suffisant pour la plupart des applications de commande et de mesure.
Ce paramétrage RS232 garantit une liaison série stable entre l’ordinateur et la Basic Stamp pour transmettre des variables, des commandes ou des données capteurs dans vos projets électroniques.
‘POUR TRANSMET UNE VALEUR AU PC: dans ce code PIN 1 est connecté au TX ‘du connecteur DB9
………OUTPUT 1
………main: ‘label
………SEROUT 1, 16468, [« salut »] ‘envoyer une byte
………goto main
‘POUR LIRE UNE VALEUR VENANT DU PC: dans ce code PIN 0 est connecté au RX du connecteur DB9
………INPUT 0
………switch var byte
………switch = 255
………main:
………SERIN 0,16468, [switch]
………goto main
Le PC peut lire la donnée depuis Macromedia Director et le Serial Xtra de Geoff Smith, MAX MSP ou Pure Data.
LINGO EXEMPLE CODE:
__moviescript__
global theXtra, theXtraName, theXtraFilename
on startmovie
–SEE SAMPLE MOVIE AT PHYSCIAL BITS TO GET A LICENSE OR DEMO VERSION
end
on LoadXtraFileIfNecessary
if scanXtraList() = false then
if the platform contains « Macintosh » then
if ( getProp(the environment, #osVersion) contains « 10. » ) then
set theXtraFilename to theXtraName& ».osx »
else
set theXtraFilename to theXtraName& ».os9″
end if
else
set theXtraFilename to theXtraName& ».x32″
end if
— So it is not open
openxlib the pathname&theXtraFilename
end if
end
on openThePort
global theports, keyspan
theports = string(FindPorts())
keyspanstart = offset(« /dev/cu.USA19Q », theports) –USA19
keyspanend = offset(« 1.1 », theports)
keyspan = chars(theports, keyspanstart, keyspanend +2)
theXtra.OpenPort(keyspan)
theXtra.setProtocol(9600, « n », 8, 1)
end
on stopMovie
if objectP( theXtra ) then
theXtra.ClosePort()
set theXtra to 0
end if
closexlib
clearglobals
end
__passthroughframescript__
global theXtra
on exitFrame me
if theXtra.IsPortOpen() = 0 then openThePort
if theXtra.IsPortOpen() = 1 then go the frame + 1
end
__exitframescript__
global theXtra, prox
on exitframe
readStamp
go the frame
end
on ReadStamp
if theXtra.CharsAvailable( ) > 0 then
prox = theXtra.ReadNumber()
end if
end
Source: hehe.org.free.fr | CC