programme en vba qui envoye des infos au port serie - VB/VBA/VBS - Programmation
Marsh Posté le 25-03-2005 à 01:57:38
Google est ton ami.
Voilà ce que j'ai trouvé: http://www.vbfrance.com/code.aspx?ID=23549.
Marsh Posté le 25-03-2005 à 09:54:51
nantuko a écrit : Google est ton ami. |
je t remercie mais il ne m indique que des programmes pour récuperer des données mais moi je veux envoyer des infos sur le port serie
merci
Marsh Posté le 25-03-2005 à 11:44:54
Tu veux faire transiter sur quoi ?
quelle interface derrière le port série ?
http://grafikm.developpez.com/portcomm/
Marsh Posté le 01-04-2005 à 08:36:50
Bonjour
en faite je veux envoyer des infos d 'excel a un automate.la liaison entre c est deux machine est une liaison série rs 485. Donc j ai un programme java qui le fais mais vu que je travaille deja sur excel et vba ca serai mieux de tout faire en vba d excel.
Est ce possible et est ce que vba d excel va supporter ce programme.
je te remercie
tchao
bon week end
Marsh Posté le 05-04-2005 à 10:33:38
Ben si déjà tu donnais le listing de ton prog java, on pourrait te le traduire...
Marsh Posté le 05-04-2005 à 11:54:34
AlainTech a écrit : Ben si déjà tu donnais le listing de ton prog java, on pourrait te le traduire... |
ok voila le programme en java
import javax.comm.*;
import com.sun.comm.Win32Driver;
import java.io.*;
import java.util.Enumeration;
public class f {
// while (!lu.equals("q" )) {
private BufferedReader bufRead; //flux de lecture du port
private OutputStream outStream; //flux d'écriture du port
private CommPortIdentifier portId; //identifiant du port
private SerialPort sPort; //le port série
/**
* Constructeur
*/
public f(String port) {
//initialisation du driver
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize();
//récupération de l'identifiant du port
try
{
portId = CommPortIdentifier.getPortIdentifier(port);
System.out.println ("Le port de communication " + portId.getName() + " existe bien " );
} catch (NoSuchPortException e)
{
System.out.println ("Le port " + port + " specifie au demarrage n'existe pas" );
}
//ouverture du port
try {
sPort = (SerialPort) portId.open("UtilisationFlux", 30000);
} catch (PortInUseException e) {
}
//règle les paramètres de la connexion
try {
sPort.setSerialPortParams(
9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
}
//récupération du flux de lecture et écriture du port
try {
outStream = sPort.getOutputStream();
bufRead =
new BufferedReader(
new InputStreamReader(sPort.getInputStream()));
} catch (IOException e) {
}
}
/**
* Méthode de communication.
*/
public String communiqueChar(char envoie) {
String poids = null;
try {
//demande de poids
outStream.write((int) envoie);
//lecture du poids
poids = bufRead.readLine().trim();
} catch (IOException e) {
}
return poids;
}
public String communiqueString(String strEnvoie) {
String poids = null;
char envoie = '_';
try {
//Faire une boucle pour lire chaque caractere du string strEnvoie
//dans le char envoie
for (int i=0; i<strEnvoie.length(); i++)
{
envoie = strEnvoie.charAt(i);
//ecriture du caractere
outStream.write((int) envoie);
}
//lecture de la reponse
poids = bufRead.readLine().trim();
} catch (IOException e) {
}
return poids;
}
/**
* Méthode de fermeture des flux et port.
*/
public void close(){
try {
bufRead.close();
outStream.close();
} catch (IOException e) {
}
sPort.close();
}
/**
* Méthode principale de l'exemple.
*/
public static void main(String[] args)throws IOException
{
if (args.length == 0)
{
System.out.println ("Vous devez specifier un port de communication" );
System.out.println ("Voici la liste des ports existants sur le PC" );
// Initialisation du driver
Win32Driver w32Driver = new Win32Driver();
w32Driver.initialize();
// Recuperation de l'énumeration des ports
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
// Affichage des noms des ports
CommPortIdentifier portId;
while (portList.hasMoreElements())
{
portId = (CommPortIdentifier)portList.nextElement();
System.out.println (portId.getName());
}
// sortie du programme
return ;
}
//Récupération du port en argument
String port = args[0];
//Construction de l'interface à la balance
UtilisationFlux utilFlux = new UtilisationFlux(port);
//"interface utilisateur"
System.out.println("taper q pour quitter, ou ENTER pour le poids" );
//construction flux lecture
//lecture sur le flux entrée.
String ligne;
try {
BufferedReader clavier =
new BufferedReader(new FileReader("essai" ));
ligne = clavier.readLine();
while (!ligne.equals("q" ))
{
clavier = new BufferedReader(new FileReader("essai" ));
System.out.println ("La ligne saisie est : " + ligne);
System.out.println ("On envoie la chaine sur le port serie :" + ligne);
String reponse = utilFlux.communiqueString(ligne);
System.out.println("Reponse recue : " + reponse);
BufferedReader clavie =
new BufferedReader(new FileReader("essai" ));
ligne = clavie.readLine();
}
clavier.close();
} catch (IOException e) {
}
utilFlux.close();
}
// }
}
je te remercie d avance
Mais apres quelque recherche je me dis qu il existe un moyen avec une commande msncomm, non? a quoi ca sert?
merci encore a+
Marsh Posté le 24-01-2006 à 15:18:22
Je fais un grand UP:
Est ce possible de faire la même chose sans la commande MSComm ???
Merci d'avance c'est assez important !
Marsh Posté le 12-12-2008 à 16:18:45
Moi pour communiquer avec ma balance sous windows j'ai utilisé le logiciel BillRedirect super facile à utiliser et la documentation est disponible en francais ... J'ai eu un petit problème j'ai communiqué avec le support technique qui m'a répondu très rapidement ... pour plus d'informations visite le site: www.billproduction.com
http://www.billproduction.com/bill [...] ex_fr.html
Chow et bonne chance avec votre balance !
Marsh Posté le 24-03-2005 à 17:17:39
bonjour je cherche un programme en visual basic qui permet d envoyer des infos, soit d un fichier txt ou soit d une feuille excel si c est possible,sur un port serie.
est ce possible
je vous remercie