Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Componente TApdComport en Delphi 2010 (https://www.clubdelphi.com/foros/showthread.php?t=70710)

JoysticK 06-11-2010 14:07:25

Componente TApdComport en Delphi 2010
 
Estoy investigando algún componente para comunicación serie mediante delphi 2010 por ahora me he descargado el paquete AsyncPro, he instalado los componentes pero ya he recibido el primer error al intentar compilar el programa ejemplo Excom0, para variar con las char y ansi char...

Código:

{**********************Description************************}
{*    TApdComPort with an OnTriggerAvail handler.        *}
{*********************************************************}

unit Excom0;

interface

uses
  WinTypes, WinProcs, SysUtils, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, AdPort, OoMisc;

type
  TForm1 = class(TForm)
    ApdComPort1: TApdComPort;
    Test: TButton;
    Memo1: TMemo;
    procedure TestClick(Sender: TObject);
    procedure ApdComPort1TriggerAvail(CP: TObject; Count: Word);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TestClick(Sender: TObject);
  {TestClick button click - Send output}
begin
  ApdComPort1.OutPut := 'ATZ'^M;
end;

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
  {Event OnTriggerAvail - Example how OnTriggerAvail works}
var
  I : Word;
  C : Char;
  S : String;
begin
  S := '';
  for I := 1 to Count do begin
    C := ApdComPort1.GetChar;
    case C of
      #0..#31 : {Don't display} ;
      else S := S + C;
    end;
  end;
  ShowMessage('Got an OnTriggerAvail event for: ' + S);
  //Memo1.Text := Memo1.Text + S;
end;

end.

El error de compilación me lo marca en la linea:

Código:

    C := ApdComPort1.GetChar;
Con el error
Cita:

[DCC Error] EXCOM0.PAS(77): E2010 Incompatible types: 'Char' and 'AnsiChar'
He probado a cambiar la definicion de la variable C a
Código:

  C : AnsiChar;
El ejemplo compila pero los datos que recibe del puerto serie no tienen ningun sentido cuando en el hiperterminal si recibo texto coerente

Cita:

0fÌƘ†˜Ì3€†àžfžÿÀÌ€Ìfà†øfàæà~3xcü`ffÀøfÌÀžfãæà†~ÀÌxæxÏ€˜fÃü†~Àxf𞘞<`?˜ì˜àœƒf̆ž˜€˜ààÀàÀ˜à˜30ž€fxóð Â~ÀÌxóž€0fáü†~ÀxxÏ€˜žœ`?˜Ìüƒf̆ž˜˜àÀàÀ˜àà˜030`Ï€†fÃæà†~ÀÌxÌóž€0fxÿÃ~ÀxÌxÏ€˜ž<`Ÿ˜æ˜xÏ€f䆞˜˜àÀàÀ˜à˜à ˜030¼
¿ alguna idea ?

FGarcia 06-11-2010 18:40:43

Se que es un buen componente, muy completo, pero para lo que yo uso el puerto serie es demasiado. Asi que mejor uso el ComPort Version 4.0 beta modificado y me ha funcionado de "peluches".

La modificacion es muy sencilla:

1. Abres el archivo CPort.pas y buscas el codigo del TComDatPacket y cambias la definicion de String por AnsiString en todos sus metodos y eventos.

2. Edita el DsgnCport14.dpk y reemplaza CPortLib12 por CPortLib14

3. Cuando hagas uso del componente en la Unit donde declaras el ComPort aparece la unit Cport, añade tambien la CPortTypes asi te evitas el molesto mensaje de que "no esta definido el tipo"


Edito: Link descarga TComPort
Ademas estoy obsevando que ya liberaron la V4.0 con soporte hasta XE. Habra que probarlo.


El punto 1 y 2 estan documentados en un mensaje del foro de Help en sourceforge. El punto 3 ese es mio.


La franja horaria es GMT +2. Ahora son las 23:05:50.

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