Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2007
The_Animal The_Animal is offline
Miembro
 
Registrado: sep 2007
Posts: 15
Poder: 0
The_Animal Va por buen camino
¿Como enviar un mensaje en ASCII desde un edit a una máquina por puerto serial?

Estimados amigos de ClubDelphi:

Primero que nada, agradezco por la existencia de esta página, ya que gracias a ustedes pude resolver muchas dudas en relación a la programación en Delphi.

Es la primera vez que programo en este programa (El cual llevo 2 meses informandome y una semana realizando este programa) y mi primer post.

Mi consulta es la siguiente:

Estoy en mi seminario de título y estoy realizando un programa con Delphi 7 para poder realizar comunicación por puerto serial con unos equipos de una molinera (4 en total), por código ASCII.

El asunto es que por medio de un edit, quiero realizar un cambio de valor de por ejemplo, de 6300 Kg/m3 de un dosificador de trigo a 6000. y el comando es el siguiente:

>01Q006300D8 (Este es un ejemplo). (Si tengo entendido, por código ASCII).

El asunto es que este comando es recepcionado por la máquina, recibiendo una respuesta en el computador, del tipo ACK (Mensaje correcto), y NAK (Mensaje fallido o No hay Respuesta). Esto lo logré por medio del uso de Hyperterminal.

Pero lo que quiero es realizar la misma acción con el programa en Delphi, en la cual envío el valor por medio de un edit, recibir la respuesta de la máquina a un memo, y a la vez de realizar el cambio del valor de 6300 a 6000 en ese dosificador. Quisiera que pudieran aportarme con un ejemplo o programa, y si también me pueden recomendar el componente para el puerto serial (Tengo el TComport, el Turbo Power Async, ý otros componentes más).

También que me responda, con su comando respectivo, pero a una balanza electrónica.

Espero que no sea mucho pedir, y disculpen si a alguno de repente le pueda molestar el mensaje, es mi primer post.
Responder Con Cita
  #2  
Antiguo 15-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, te cuento que tu post no es desagradable, todo lo contrario para ser tu primer post es bueno .

No soy un experto en la materia por lo que solo puedo decirte dos cosas al respecto...

1. Se supone que la cadena que nos haz mostrado "01Q006300D8" es una "trama" donde tu debes saber el significado de cada caracter que en dicha cadena. Para enviar estas "señales" a dicho puerto deberas hacerlo de alguna manera y seguramente la función CHR de Delphi te ayudara con eso ya que tiene que ser ASCII .

2. Te recomiendo que el Memo donde recibes el resultado que te devuelve el aparato que mencionas tenga como Font.Name la fuente Terminal, para que veas la diferencia entre los caracteres y no te encuentres con un poco de cuadritos iguales que a los ojos humanos no signifiquen nada .

Se que esto no te ayudara en gran manera pero aún asi, espero que por lo menos te sirva de algo.

Hasta la proxima .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 15-11-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Hola!

A groso modo tu no debes de convertir nada a ascii pues de eso se encarga el componente que uses (yo uso ComPort de Djan Cernilla). Por ejemplo:

Código Delphi [-]
//Enviamos una cadena con un click de un boton
procedure TForm1.Button_SendClick(Sender: TObject);
var
  Str: String;
begin
  Str := Edit_Data.Text;
  Str := Str + #13#10;
  ComPort.WriteStr(Str);
end;

Asi mismo deberias tener una "escucha" que espere la respuesta por ejemplo:

Código Delphi [-]
//Esperamos un mensaje de respuesta
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
  ComPort.ReadStr(Str, Count);
  Memo.Text := Memo.Text + Str;
end;

Con respecto a lo de la balanza, que tipo / marca de balanza o bascula es? cada marca tiene formatos de transmision diferentes.

Espero te ayude esto y si quedan mas dudas comentalas que alguien nos respondera.
Responder Con Cita
  #4  
Antiguo 15-11-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola The_Animal

Yo uso el componente TApro y es muy simple hacer lo que deseas.

Código Delphi [-]
ApdComPort2.PutString('>01Q006300D8');

Para recibir el caracter de control puedes usar un trigger del mismo componente mas o menos así:

Código Delphi [-]
DataTrig1 := ApdComPort2.AddDataTrigger(#6, True); //ACK
DataTrig2 := ApdComPort2.AddDataTrigger(#21, True); //NAK

Y posteriormente actuar en consecuencia en el evento OnTriggerAvail del mismo componente.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 15-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, solo una anotación mas:

Comport
=======
Cita:
Delphi/C++ Builder serial communications library. This is less known and has fewer features compared with AsyncPro. (http://sourceforge.net/projects/tpapro/) However, it is generally easier to use for straightforward I/O.
Como ultimamente ando peor que antes con esto del ingles, pues use la ayuda de un amigo que hay en la red (Al tipo ese le dicen disque google ), el cual me ha dicho que eso significa lo siguiente:

Cita:
Delphi / C + + Builder biblioteca de comunicaciones serie. Esto es menos conocida y tiene menos funciones en comparación con AsyncPro. (Http://sourceforge.net/projects/tpapro/) Sin embargo, es generalmente más fácil de usar para el sencillo I / O.
TPapro
======

Cita:
Async Professional is a comprehensive communications toolkit for Borland Delphi, C++Builder, & ActiveX environments. It provides direct access to serial ports, TAPI, and the Microsoft Speech API. It supports faxing, terminal emulation, VOIP, & more.
Cita:
Async Professional es un completo kit de herramientas de comunicaciones para Borland Delphi, C + + Builder, ActiveX y entornos. Ofrece acceso directo a los puertos serie, TAPI, y el Microsoft Speech API. Apoya fax, emulación de terminal, VOIP, y más.
Lo bueno de TPapro es que es mas completo, lo bueno de Comport es que segun ellos es mas sencillo de usar y que hay un proyecto de Comport para Lazarus http://sourceforge.net/projects/cportlaz/ . Parece que hay suficientes opciones .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 15-11-2007
The_Animal The_Animal is offline
Miembro
 
Registrado: sep 2007
Posts: 15
Poder: 0
The_Animal Va por buen camino
Estimados amigos de ClubDelphi:

Agradezco que me hayan podido contestar, me estoy empezado a generar una idea, y estoy empezando a trabajarla. Para [FGarcia], Me peguntaste sobre el tipo de balanza que estoy ocupando. La balanza electrónica que estoy usando es la balanza automática MSDL del tipo Tubex de la empresa Suiza Buhler (Al igual que el dosificador de trigo).

No mencioné la trama de la balanza en el mensaje, por que no me acordaba, pero el mensaje que mandé por hyperterminal es el siguiente:

>01qD2 (01 es el número del equipo, q es una variable respectiva de la balanza (No recuerdo con exactitud, creo que peso total no borrable en Kg) y D2 (Hexadecimal), si no me equivoco, corresponde a 132 en decimal).

Espero que puedan seguir ayudándome, y una vez más, gracias a todos por sus aportes.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copiar un archivo a otra pc usando el puerto serial como comunicacion maravert API de Windows 3 10-06-2007 17:24:42
¿¿Como capturo datos que entran por el puerto serial de mi PC? David Nova Varios 2 11-10-2006 09:49:23
Como recibir datos en un puerto serial JULIPO PHP 1 17-06-2006 20:54:36
Enviar un comando a una maquina unix desde Windows SMTZ Internet 0 15-11-2004 18:19:24
Como usar el puerto serial JefeNet Varios 1 02-11-2004 10:04:00


La franja horaria es GMT +2. Ahora son las 07:08:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi