回 帖 发 新 帖 刷新版面

主题:spcom的问题

xp系统,dephi5,在运行以下spcom的例程序时,出现‘acess violation’,其错误指向writecommdata(read address of 0028);请赐教;代码如下:
unit PAS_SCI;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ComCtrls, ExtCtrls, Menus, SPComm;

type
  TFComm = class(TForm)
    BitBtn1: TBitBtn;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Label1: TLabel;
    Memo1: TMemo;
    StatusBar1: TStatusBar;
    DateTimePicker1: TDateTimePicker;
    MainMenu1: TMainMenu;
    Stopbit1: TMenuItem;
    N11: TMenuItem;
    N151: TMenuItem;
    N21: TMenuItem;
    None1: TMenuItem;
    Parity1: TMenuItem;
    Odd1: TMenuItem;
    Even1: TMenuItem;
    None2: TMenuItem;
    Databit1: TMenuItem;
    N61: TMenuItem;
    N71: TMenuItem;
    N81: TMenuItem;
    Handshaking1: TMenuItem;
    Have1: TMenuItem;
    None3: TMenuItem;
    Baudrate1: TMenuItem;
    N3001: TMenuItem;
    N6001: TMenuItem;
    N12001: TMenuItem;
    N24001: TMenuItem;
    N48001: TMenuItem;
    N96001: TMenuItem;
    N192001: TMenuItem;
    Com1: TComm;
    N1101: TMenuItem;
    procedure SpeedButton1Click(Sender: TObject);
    procedure N12001Click(Sender: TObject);
    //procedure Formshow(Sender: TObject) ;

  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  FComm: TFComm;
  receive_data, transmit_data : char;
  FCOMM1 : TCOMM;

  viewstring : string;
  i : integer;
  rbuf,sbuf: array[1..16] of byte;
  procedure Formshow() ;

implementation

{$R *.DFM}

procedure senddata;
var
i: integer;
commflg:boolean;
begin
viewstring :=' ';
commflg := true;
for i:=1 to 6 do
  begin
  if NOT FComm1.writecommdata(@sbuf[i],1) then
    begin
    commflg := false;
    break;
    end; 
  sleep(2);//delay in transmitting data
  viewstring:= viewstring + IntToHex(sbuf[i],2)+' ';
  end;
viewstring := 'send' + viewstring;
FComm.memo1.lines. add(viewstring);
FComm.memo1.lines.add(' ');
if not commflg then
MessageDlg('sending failure !',mterror ,[mbyes],0);
end;



procedure TFComm.SpeedButton1Click(Sender: TObject);
var
 times :integer;
begin
sbuf[1] := byte($f0);
sbuf[2] := byte($01);
sbuf[3] := byte($ff);
sbuf[4] := byte($ff);
sbuf[5] := byte($01);
sbuf[6] := byte($f0);
senddata;

for times :=0 to 1000
do
MEMO1.Text := MEMO1.Text+'   '+ InttoStr(times);
end;

procedure TFComm.N12001Click(Sender: TObject);
begin
//Form1.MainMenu1.N12001.caption := '1200';
end;

procedure  Formshow();
begin
FComm1.StartComm;
end;

procedure FormClose(Sender:Tobject; var action: TCloseAction);
begin
FComm1.StopComm;
end;

end.

回复列表 (共1个回复)

沙发


自己顶一下。

我来回复

您尚未登录,请登录后再回复。点此登录或注册