Aller au contenu
RS232

La communication vers un ordinateur en RS232

    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.

    DB9LE PBASIC:

    ‘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