晚上给你发一个,用SPCOMM做的,通过USB口转换成串口后不行,建议直接用API编,例子我也有
解决方案 »
- dll中用UrlDownLoadToFile问题?
- 有谁有关于图书馆管理系统的程序呀
- ADO的联合删除?
- (300分)有没有画图方面的行家在线?关于定位的精确问题。在线等,比较急的..
- 【广告】上海构件库网站正式发布,欢迎广大软件开发者及相关人士!
- 紧急请求帮助阿!关于ado操作oracle程序的安装问题
- 如何判断程序是开机自动运行的,还是用户双击运行的?
- 将EXE文件刻到光盘中,怎样才能做到当启动该光盘时就启动该文件?
- 急急!!delphi与数据问题。
- 一個非常愚蠢的問題,如何用speedbutton的雙擊事件???
- 如何在Delphi里实现回调函数......
- 怎样在Richedit中插入Gif?
昨天你发了吗?怎么我没有收到,劳烦你发个给我,小弟感激不尽!同时能留个QQ号吗?想和你交流一下!
线程文件:unit Unit2;interfaceuses
Windows,Classes, SysUtils;type
TReadThread = class(TThread)
private
{ Private declarations }
procedure ReadPort; //读取串行端口数据
protected
procedure Execute; override;
end;implementation
uses Unit1; // 声明引用Unit1,必须放在implementation区段procedure TReadThread.Execute;
begin
{ Place thread code here }
While not Terminated do
begin
Synchronize(ReadPort);//刚才所定义的读取数据函数
end;
end;//读取串行端口的程序放在这里
procedure TReadThread.ReadPort;
var
Temp : string;
inbuff: array[0..65534] of Char;
nBytesRead, dwEvent, dwError:LongWORD ;
cs:TCOMSTAT;
begin
if (hComm=0) then exit;//先判断是否已打开通信端口
ClearCommError(hComm,dwError,@CS); //取得状态
ReadFile(hComm, inbuff,cs.cbInQue,nBytesRead,nil); // 接收COM 的数据
//串行在读取数据后,会自动将缓冲区中已被读取的数据清除掉
if cs.cbInQue =0 then exit;
// 数据是否大于我们所准备的Buffer
if cs.cbInQue > sizeof(inbuff) then
begin
PurgeComm(hComm, PURGE_RXCLEAR); // 清除COM 数据
exit;
end;
Temp:=Copy(inbuff,1,cs.cbInQue);//取出数据
Form1.mReceive.Text :=Form1.mReceive.Text + Temp; // 将数据显示于Memo1 上
Form1.mReceive.SetFocus ;
Form1.mReceive.SelStart :=Length(Form1.mReceive.Text);
Form1.mReceive.SelLength :=0; //移到最下端
end;
end.
。
。
。
。
private
{ Private declarations }
ReadThread:TReadThread;//声明读取数据的线程
end;var
Form1: TForm1;
hComm: THandle;implementation{$R *.DFM}procedure TForm1.btnSendClick(Sender: TObject);
var
Temp:string;
lrc:LongWord;
begin
if (hComm=0) then exit;//若尚未打开通信端口,则跳出
Temp:=mSend.Text ;//欲送出的数据
//执行送出的函数
WriteFile(hComm,Pointer(Temp)^,Length(Temp), lrc, nil); //送出数据
end;//以下是清除显示数据按钮按下时的执行程序代码
procedure TForm1.btnClearClick(Sender: TObject);
begin
mReceive.Clear; //将接收区清除
end;//以下是打开通信端口的函数
procedure TForm1.btnOpenPortClick(Sender: TObject);
beginend;
//结束系统的按钮
procedure TForm1.btnEndClick(Sender: TObject);
begin
CloseHandle(hComm);//关闭通信端口
end;
//当于Memo对象中按下按钮后,执行以下的程序
//窗体建立时执行以下的程序
procedure TForm1.FormCreate(Sender: TObject);
begin
//建立线程对象,并且激活执行
ReadThread:=TReadThread.Create(False);
end;//窗体关闭时执行以下的程序
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ReadThread.Free; //释放对象
end;
procedure TForm1.btnOKClick(Sender: TObject);
var
cc:TCOMMCONFIG;
Temp:string;
begin
Temp:=trim(Combobox1.Text) ; // 选择所要打开的COM
hComm:=CreateFile(PChar(Temp), GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING, 0, 0);// 打开COM
if (hComm = INVALID_HANDLE_VALUE) then
begin//如果COM 未打开
MessageBox (0, '打开通信端口错误!!','',MB_OK);
exit;
end; GetCommState(hComm,cc.dcb); // 得知目前COM 的状态
cc.dcb.BaudRate:=CBR_9600; // 设置波特率为9600
cc.dcb.ByteSize:=8; //字节为 8 bit
cc.dcb.Parity:=NOPARITY; // Parity 为 None
cc.dcb.StopBits:=ONESTOPBIT;// 1 个Stop bit if not SetCommState(hComm, cc.dcb) then
begin// 设置COM 的状态
MessageBox (0, '通信端口设置错误!!!','',MB_OK);
CloseHandle(hComm);//关闭通信端口
exit;
end; end;procedure TForm1.Button6Click(Sender: TObject);
var
Temp:string;
lrc:LongWord;
begin
if (hComm=0) then exit;//若尚未打开通信端口,则跳出
Temp:=mSend.Lines.Text ;//欲送出的数据
//执行送出的函数
WriteFile(hComm,Pointer(Temp)^,Length(Temp), lrc, nil); //送出数据
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
mSend.Lines.LoadFromFile(OpenDialog1.FileName);
end;end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close
end;procedure TForm1.FormShow(Sender: TObject);
begin
btnOKClick(Sender);
btnok.Enabled:=false;
end;procedure TForm1.ComboBox1Change(Sender: TObject);
begin
CloseHandle(hComm);//关闭通信端口
btnok.Enabled:=true;
end;procedure TForm1.ComboBox2Change(Sender: TObject);
begin
CloseHandle(hComm);//关闭通信端口
btnok.Enabled:=true;
end;end.
http://community.csdn.net/Expert/topic/3247/3247907.xml?temp=.3752863
http://community.csdn.net/Expert/topic/3223/3223622.xml?temp=.6042902
http://community.csdn.net/Expert/topic/3134/3134468.xml?temp=.5532648
http://community.csdn.net/Expert/topic/3123/3123147.xml?temp=.5250055
http://community.csdn.net/Expert/topic/3082/3082779.xml?temp=9.208316E-02
这位楼主,别人的一点心得告知于你,希望你能尊重别人的劳动成果!
??????????????????????????????????