Accueil > > > VBA ET RS232 ENVOYER DES DONNÉES VIA PORT SÉRIE (EXEMPLE VERS ECRAN LCD)
VBA ET RS232 ENVOYER DES DONNÉES VIA PORT SÉRIE (EXEMPLE VERS ECRAN LCD)
Information sur la source
Description
Voila ayant tellement galéré pour trouver une source permettant de communiquer par port série avec du VBA je poste ici la solution que j'ai trouvé Je cherchais un moyen d'envoyer des données depuis Acces vers un ecran LCD 4x20 or impossible... Pour ceux qui ne comprendrais pas pourquoi je n'utilise pas MSCOM c'est simplement qu'il n'est pas fourni avec le VBA et qu'il est impossible de l'utiliser : message d'erreur : on n'a pas la licence =( Pour contourner le probleme j'utilise turbo pascal 7.0 (le code n'est pas de moi) Ensuite il suffit d'envoyer les variables dans la ligne de commande dans VBA : Call Shell(Environ$("COMSPEC") & " /c c:\programme.exe variable1 variable2...", vbMinimizedNoFocus) Voila.........
Source
- program com;
-
- uses dos,crt;
-
- const nbport = 0; {**********************************************}
- {* nbport = 0 pour COM1 *}
- {* nbport = 1 pour COM2 *}
- {**********************************************}
-
-
- procedure rs_init;
- {**********************************************************************}
- {* Initialise le port RS232C : 8 bits de donn‚es *}
- {* 2 bits Stop *}
- {* Parit‚ Paire *}
- {* Vitesse … 2400 Bauds *}
- {* Cette procedure doit ˆtre appel‚ une fois , avant de pouvoir *}
- {* utiliser la liaison s‚rie *}
- {* Entrée: AH = 0x00 *}
- {* DX = Numéro de l'interface série *}
- {* 0x00 = COM1 *}
- {* 0x01 = COM2 *}
- {* AL = Paramètres de configuration *}
- {* Bits 0-1: longueur du mot *}
- {* 10 = 7 bits *}
- {* 11 = 8 bits *}
- {* Bit 2: nombre de bits de stop *}
- {* 0 = 1 bit de stop *}
- {* 1 = 2 bits de stop *}
- {* Bit 3-4: contrôle de parité *}
- {* 00 = aucun *}
- {* 01 = impair *}
- {* 11 = pair *}
- {* Bit 5-7: vitesse de transmission *}
- {* 000 = 110 bauds *}
- {* 001 = 150 bauds *}
- {* 010 = 300 bauds *}
- {* 011 = 600 bauds *}
- {* 100 = 1200 bauds *}
- {* 101 = 2400 bauds *}
- {* 110 = 4800 bauds *}
- {* 111 = 9600 bauds *}
- {* *}
- {**********************************************************************}
-
- var
- regs : registers;
- begin
- regs.ah:=0;
- regs.dx:=nbport;
- regs.al:=227;
-
- intr($14,regs);
- { writeln('R‚sultat initialisation ah=',regs.ah);}
- end;
-
- function rs_status:integer;
- {*********************************************************************}
- {* Cette fonction lit le statut du port s‚rie *}
- {*********************************************************************}
- var
- regs : registers;
- begin
- regs.ah:=3;
- regs.dx:=nbport;
- intr($14,regs);
- rs_status:=regs.ah;
- end;
-
- function rs_read:integer;
- {***********************************************************************}
- {* Lecture au vol de la RS232C , Si aucun caractˆre n'a ‚t‚ recu la *}
- {* function renvoie -1 *}
- {***********************************************************************}
- var
- regs : registers;
-
- begin
- if (rs_status and 1)=1 then
- begin
- regs.ah:=2;
- regs.dx:=nbport;
- intr($14,regs);
- if (regs.ah and 128)=128 then begin
- writeln('Il y a eu erreur en lecture, AH=:',regs.ah);
- end else rs_read:=regs.al;
- end else begin
- rs_read:=-1;
- end;
- end;
-
- function rs_lecture : integer;
- {********************************************************************}
- {* Cette function attend q'un caractŠre soit recu sur le port s‚rie *}
- {********************************************************************}
- var
- aux : integer;
- begin
- repeat
- aux:=rs_read;
- until aux<>-1;
- rs_lecture:=aux;
- end;
-
- procedure rs_write(data : byte);
- {*******************************************************************}
- {* Cette proc‚dure permet d'emettre un caractŠre sur le port s‚rie *}
- {*******************************************************************}
- var
- regs : registers;
-
- begin
- regs.ah:=1;
- regs.dx:=nbport;
- regs.al:=data;
- intr($14,regs);
- if (regs.ah and 128)=128 then writeln('Erreur transmition : ',regs.ah);
- end;
-
- procedure test_lecture;
- {********************************************************************}
- {* Cette procedure permet de tester la fiabilit‚ de la liaison *}
- {* PC - Robot , elle permet entre autre d'effectuer le r‚glage de *}
- {* Vitesse de la RS232 du robot VECTOR *}
- {********************************************************************}
- var
- err,i,aux,cnt : integer;
-
- begin
- clrscr;
- rs_init;
- aux:=-1;
- err:=-1;
- cnt:=-1;
- repeat
- rs_init;
- i:=rs_lecture;
- if i<>aux+1 then err:=err+1;
- aux:=i;
- if i=255 then aux:=-1;
- inc(cnt);
- until keypressed or (cnt=1000);
- writeln;
- writeln('Il y a eu ',err,' erreurs sur 1000 ');
- end;
-
- procedure test_ecriture;
- {*******************************************************************}
- {* Permet de tester l'‚mission d'un caract‚re vers le robot VECTOR *}
- {*******************************************************************}
- var i,aux,j : integer;
- carac : char;
-
- begin
- clrscr;
- repeat
- repeat until keypressed;
- carac:=readkey;
- rs_init;
- rs_write(ord(carac));
- write(carac);
- until ((carac='Q') or (carac='q'));
- end;
-
- var
- x:integer;
- a:string[1];
- y,c:integer;
- texte : string;
- begin
- rs_init;
-
- texte = paramstr(1);
-
- for x:=1 to 80 do
- begin
- a:=copy(texte,x,1);
- rs_write(ordre(a));
- end;
- end;
- end.
program com;
uses dos,crt;
const nbport = 0; {**********************************************}
{* nbport = 0 pour COM1 *}
{* nbport = 1 pour COM2 *}
{**********************************************}
procedure rs_init;
{**********************************************************************}
{* Initialise le port RS232C : 8 bits de donn‚es *}
{* 2 bits Stop *}
{* Parit‚ Paire *}
{* Vitesse … 2400 Bauds *}
{* Cette procedure doit ˆtre appel‚ une fois , avant de pouvoir *}
{* utiliser la liaison s‚rie *}
{* Entrée: AH = 0x00 *}
{* DX = Numéro de l'interface série *}
{* 0x00 = COM1 *}
{* 0x01 = COM2 *}
{* AL = Paramètres de configuration *}
{* Bits 0-1: longueur du mot *}
{* 10 = 7 bits *}
{* 11 = 8 bits *}
{* Bit 2: nombre de bits de stop *}
{* 0 = 1 bit de stop *}
{* 1 = 2 bits de stop *}
{* Bit 3-4: contrôle de parité *}
{* 00 = aucun *}
{* 01 = impair *}
{* 11 = pair *}
{* Bit 5-7: vitesse de transmission *}
{* 000 = 110 bauds *}
{* 001 = 150 bauds *}
{* 010 = 300 bauds *}
{* 011 = 600 bauds *}
{* 100 = 1200 bauds *}
{* 101 = 2400 bauds *}
{* 110 = 4800 bauds *}
{* 111 = 9600 bauds *}
{* *}
{**********************************************************************}
var
regs : registers;
begin
regs.ah:=0;
regs.dx:=nbport;
regs.al:=227;
intr($14,regs);
{ writeln('R‚sultat initialisation ah=',regs.ah);}
end;
function rs_status:integer;
{*********************************************************************}
{* Cette fonction lit le statut du port s‚rie *}
{*********************************************************************}
var
regs : registers;
begin
regs.ah:=3;
regs.dx:=nbport;
intr($14,regs);
rs_status:=regs.ah;
end;
function rs_read:integer;
{***********************************************************************}
{* Lecture au vol de la RS232C , Si aucun caractˆre n'a ‚t‚ recu la *}
{* function renvoie -1 *}
{***********************************************************************}
var
regs : registers;
begin
if (rs_status and 1)=1 then
begin
regs.ah:=2;
regs.dx:=nbport;
intr($14,regs);
if (regs.ah and 128)=128 then begin
writeln('Il y a eu erreur en lecture, AH=:',regs.ah);
end else rs_read:=regs.al;
end else begin
rs_read:=-1;
end;
end;
function rs_lecture : integer;
{********************************************************************}
{* Cette function attend q'un caractŠre soit recu sur le port s‚rie *}
{********************************************************************}
var
aux : integer;
begin
repeat
aux:=rs_read;
until aux<>-1;
rs_lecture:=aux;
end;
procedure rs_write(data : byte);
{*******************************************************************}
{* Cette proc‚dure permet d'emettre un caractŠre sur le port s‚rie *}
{*******************************************************************}
var
regs : registers;
begin
regs.ah:=1;
regs.dx:=nbport;
regs.al:=data;
intr($14,regs);
if (regs.ah and 128)=128 then writeln('Erreur transmition : ',regs.ah);
end;
procedure test_lecture;
{********************************************************************}
{* Cette procedure permet de tester la fiabilit‚ de la liaison *}
{* PC - Robot , elle permet entre autre d'effectuer le r‚glage de *}
{* Vitesse de la RS232 du robot VECTOR *}
{********************************************************************}
var
err,i,aux,cnt : integer;
begin
clrscr;
rs_init;
aux:=-1;
err:=-1;
cnt:=-1;
repeat
rs_init;
i:=rs_lecture;
if i<>aux+1 then err:=err+1;
aux:=i;
if i=255 then aux:=-1;
inc(cnt);
until keypressed or (cnt=1000);
writeln;
writeln('Il y a eu ',err,' erreurs sur 1000 ');
end;
procedure test_ecriture;
{*******************************************************************}
{* Permet de tester l'‚mission d'un caract‚re vers le robot VECTOR *}
{*******************************************************************}
var i,aux,j : integer;
carac : char;
begin
clrscr;
repeat
repeat until keypressed;
carac:=readkey;
rs_init;
rs_write(ord(carac));
write(carac);
until ((carac='Q') or (carac='q'));
end;
var
x:integer;
a:string[1];
y,c:integer;
texte : string;
begin
rs_init;
texte = paramstr(1);
for x:=1 to 80 do
begin
a:=copy(texte,x,1);
rs_write(ordre(a));
end;
end;
end.
Conclusion
Si quelqu'un sais comment faire sans passer par le turbo pascal je suis preneur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|