条码扫描是通过串口通讯吗?如何取得扫描后的数据?谁有这方面的经验资料吗?发到 [email protected] 谢谢!
解决方案 »
- 在執行mssql查詢後,我想知道這個查詢花了多少時間,請問我怎樣做才行?謝謝大家!
- 求TDomlmplementation类控件
- 关于gif的显示?
- 关于表类编写的问题!!!
- “case statement ”语句如何应用于String类型
- 怎样删除数组里的某个数!!!
- outlook新建账号和邮件在本地的记录?(用程序访问)(高手请帮忙)
- 怎样设置LABEL组件背景是透明的???
- 求《diskeeper 6.0.380.1s》Windows2000磁盘整理工具注册码!165分!
- 有谁能用最快的方式找到不同操作系统中mspaint.exe文件所在的目录?最好不要搜索目录法!
- 关于Indy的TIdFtp控件 连不上服务器的问题
- 做文件管理器时,如何指定最上级目录?在线等~
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls; type
TCOMM = Class
State:byte;
Hcomm:THandle;
private{} public{}
procedure OpenComm(ComFlag:String);
procedure CloseComm;
Function GetCommData:string;
end;
implementation{ TCOMM }procedure TCOMM.CloseComm;
begin
IF not (Hcomm=INVALID_HANDLE_VALUE) then
closeHandle(hcomm);
end;function TCOMM.GetCommData: string;
var
Temp : string;
inbuff: array[0..2047] 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);//取出数据
result:=temp;
end;procedure TCOMM.OpenComm(ComFlag:String);
var
CC:TCommconfig;
comstr:string;
begin
Hcomm:=CreateFile(Pchar(ComFlag),GENERIC_READ OR GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);
while (Hcomm=INVALID_HANDLE_VALUE) do
begin
if messagedlg('打开通讯端口'+ComFlag+'失败! 你需要重新设置连接端口吗?',mtConfirmation,[MBYES,MBNO],0)=MRNO then exit
else begin
comstr:=inputbox('宁航科技','请输入连接端口','COM4');
ComFlag:=Comstr;
Hcomm:=CreateFile(Pchar(comstr),GENERIC_READ OR GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);
end;
end;
GetCommState(Hcomm,CC.DCB);
CC.dcb.BaudRate:=CBR_9600;
CC.dcb.ByteSize:=8;
CC.dcb.Parity:=NOPARITY;
CC.dcb.StopBits:=ONESTOPBIT;
if not SetCommState(Hcomm,CC.dcb) then
begin
Messagebox(0,'通讯设备端口参数设置错误!','系统提示',MB_OK);
exit;
end;
end;end.