​ ​ ​ ​ Commande SERIN dans le module AXE133Y ? (Serial OLED display interface)
Results 1 to 2 of 2

Thread: Commande SERIN dans le module AXE133Y ? (Serial OLED display interface)

  1. #1
    Member
    Join Date
    Apr 2014
    Location
    Liège (French Belgium)
    Posts
    67

    Default Commande SERIN dans le module AXE133Y ? (Serial OLED display interface)

    Bonsoir à l’Equipe des Spécialistes.
    [ Post également ouvert sur le Forum-GB: http://www.picaxeforum.co.uk/showthr...lay-interface) ]

    Je me penche sur le code de l’interface Série pour afficheur OLED « AXE133Y » et j’ai un problème de compréhension avec la commande Serin telle qu’employée ici.

    Source : http://www.picaxe.com/downloads/axe133y.bas.txt

    Imaginons que le MCU du système principal envoie à l’interface Série la commande [Serout C.4, Baud,(254,192) ;Position Ligne.2, Col.1 ]

    On envoie donc bien ici 2 bytes (254 et 192). Le premier pour dire "C'est une commande" et le second" pour spécifier le code de cette commande: Position = Ligne2 / Colonne 1 ".

    Côté Interface série, qui reçoit ces informations, on devra donc traiter ces deux Bytes.
    Pourquoi alors le code de l’interface Série emploie la commande [ Serin RX, Baud, b1 ] et non une commande du genre [ Serin RX, Baud, b1, b2 ] ?

    Dans mon esprit, la commande Serin, placée en début de boucle Main, telle qu’utilisée ici, placera bien le premier byte dans b1 mais une fois cela fait, le 2ème byte sera définitivement perdu et je ne vois pas comment la commande Serin suivante, placée plus bas dans la boucle conditionnelle, captera quoi que ce soit puisqu’il n’y aura eu qu’UN SEUL Serout transmis et DEJA LU précédemment et que ce Serout n'aura été envoyé qu'une seule fois et non renouvelé lorsque ce deuxième Serin arrivera !?


    Code:
    main:
    
    serin RX,baud,b1	; wait for the next byte <------------Premier SERIN ------------------- 1 byte !?
    
    ; NB keep character mode test as first item in this list to optimise speed
    
    if b1 < 253 then		; CHARACTERS
      let pinsB = b1 		; output the data
      pulsout enable,1  	; pulse the enable pin to send data.
      goto main		; quickly loop back to top
    
    else if b1 = 254 then	; CONTROL <--------------------------------
      low rs 	     		; change to command mode for next character
      serin RX,baud,b1	; wait for the command byte <------- Second SERIN --------------------------???????????????
      let pinsB = b1 		; output the data
      pulsout enable,1  	; pulse the enable pin to send data.
      high rs			; back to character mode
      goto main		; quickly loop back to top
    
    else if b1 = 253 then	; MESSAGE
      serin RX,baud,b1	; wait for the next byte
      gosub msg		; do the 16 character message
      goto main		; back to top
    
    else ; must be 255	; OUTPUT
      serin RX,baud,b1	; wait for the next byte
      let pinsC = b1 & %00000111 | %10000000
      ; output the data on C.0 to C.2, keep RS high
      goto main		; back to top
    
    end if
    Merci pour votre aide.
    Last edited by zorgloub; 13-04-2017 at 10:01. Reason: Ajout de l'adresse du Post sur le Forum GB

  2. #2
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,778

    Default

    Bonjour,
    Le code lit bien 2 bytes.

    Si on a une boucle rapide, on peut très bien avoir des serin qui se suivent.
    serin xxxx , xxxx,( b1)
    serin xxxx , xxxx,( b2)
    donnera le même résultat que
    serin xxxx , xxxx,( b1, b2)
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •