是用SPCOMM控制元件進行串口通信,但是在運行的時候程式總是會報出access violation at address in module這樣的錯誤,不知道這是怎么回事呢?單步運行的時候因為我不太懂,所以看不出問題在哪里,高手能不能給解答一下,我第一次做串口這的東西,還不是太熟悉!謝謝了,我的代碼是這樣的
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SPComm, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Comm1: TComm;
Memo1: TMemo;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Comm1: TComm;
Memo1: TMemo;
viewstring:string;
i:integer;
rbuf,sbuf:array[1..256] of byte;
implementation
{$R *.dfm}
procedure senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=1 to 6 do
begin
if not comm1.writecommdata(@sbuf[i],1) then
begin
commflg:=false;
break;
end;
//發送時位元組間的延時
sleep(2);
viewstring:=viewstring+inttohex(sbuf[i],2)+' ';
end;
viewstring:='發送'+viewstring;
memo1.lines.add(viewstring);
memo1.lines.add('');
if not commflg then messagedlg('發送失敗',mterror,[mbyes],0);
end;
procedure TForm1.Button2Click(Sender: TObject);
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;//呼叫發送函式
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
comm1.StopComm;
comm1.StartComm;
end;
end.
就一個小例子
uj5u.com熱心網友回復:
代碼本身沒有問題.要看看其他地方!uj5u.com熱心網友回復:
出現這種錯誤 往往是指標沒分配記憶體或者越界訪問。uj5u.com熱心網友回復:
你看看串口是不是已經被其他程式打開占用了uj5u.com熱心網友回復:
嗯 各種情況都有 ,樓主解決沒?
uj5u.com熱心網友回復:
估計是串口占用?關掉其他用串口的程式
uj5u.com熱心網友回復:
安裝一個 Eurekalog 7.0,可以定位記憶體出錯的函式,非常方便。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107270.html
標籤:網絡通信/分布式開發
