不用MSCOMM和SPCOMM(不是我的意思)。
同一台计算机,XP操作系统,COM1与COM2下互发数据,按书上说的例子也搞不定,请各位大侠帮忙。
1) CreateFile是没有问题:
SendComFile := CreateFile('COM1',Generic_Write,0,nil,Open_Existing,File_Flag_overlapped,0);
ReceiveComFile := CreateFile('COM2',Generic_Read,0,nil,Open_Existing,File_Flag_overlapped,0);2)设置参数如下:
SendComFileDCB.BaudRate := 9600;
SendComFileDCB.Parity := NoParity;
SendComFileDCB.ByteSize :=8;
SendComFileDCB.StopBits :=OneStopBit;
SetupComm(SendComFile,1024,1024);
SetCommMask(SendComFile,EV_RxChar); ReceiveComFileDCB.BaudRate := 9600;
ReceiveComFileDCB.Parity := NoParity;
ReceiveComFileDCB.ByteSize :=8;
ReceiveComFileDCB.StopBits :=OneStopBit;
SetupComm(ReceiveComFile,1024,1024);
SetCommMask(ReceiveComFile,EV_TxEmpty);3)点一个按钮:发送语句如下:
SendBuffer := Pchar(MemoSend.Text);
NumberOfWrite := Length(MemoSend.Text);
WriteFile(SendComFile,SendBuffer,NumberofWrite,NumberOfWriten,0);4)点一个按钮,接收请句如下:
BClear := ClearCommError(ReceiveComFile,lpErrors,@ComState);
if BClear then
begin
NumberOfRead := Comstate.cbInQue;
ReadFile(ReceiveComFile,ReceiveBuffer,NumberOfRead,NumberOfReadn,0);
showmessage(ReceiveBuffer);
end;
没有别的功能,只是这样简单的功能,便就是收不到,ReceiveBuffer是一个别码,每次都一样。我想API是不是像MSCOMM一样,这边OUTPUT,那边INPUT,就搞定了。重点想知道,WriteFile和ReadFile中的两上要发送/接收的字节数,实际发送接收的字节数,具体要怎样设置,特别是后者,给我的感觉不清楚。多谢!!多谢!!
同一台计算机,XP操作系统,COM1与COM2下互发数据,按书上说的例子也搞不定,请各位大侠帮忙。
1) CreateFile是没有问题:
SendComFile := CreateFile('COM1',Generic_Write,0,nil,Open_Existing,File_Flag_overlapped,0);
ReceiveComFile := CreateFile('COM2',Generic_Read,0,nil,Open_Existing,File_Flag_overlapped,0);2)设置参数如下:
SendComFileDCB.BaudRate := 9600;
SendComFileDCB.Parity := NoParity;
SendComFileDCB.ByteSize :=8;
SendComFileDCB.StopBits :=OneStopBit;
SetupComm(SendComFile,1024,1024);
SetCommMask(SendComFile,EV_RxChar); ReceiveComFileDCB.BaudRate := 9600;
ReceiveComFileDCB.Parity := NoParity;
ReceiveComFileDCB.ByteSize :=8;
ReceiveComFileDCB.StopBits :=OneStopBit;
SetupComm(ReceiveComFile,1024,1024);
SetCommMask(ReceiveComFile,EV_TxEmpty);3)点一个按钮:发送语句如下:
SendBuffer := Pchar(MemoSend.Text);
NumberOfWrite := Length(MemoSend.Text);
WriteFile(SendComFile,SendBuffer,NumberofWrite,NumberOfWriten,0);4)点一个按钮,接收请句如下:
BClear := ClearCommError(ReceiveComFile,lpErrors,@ComState);
if BClear then
begin
NumberOfRead := Comstate.cbInQue;
ReadFile(ReceiveComFile,ReceiveBuffer,NumberOfRead,NumberOfReadn,0);
showmessage(ReceiveBuffer);
end;
没有别的功能,只是这样简单的功能,便就是收不到,ReceiveBuffer是一个别码,每次都一样。我想API是不是像MSCOMM一样,这边OUTPUT,那边INPUT,就搞定了。重点想知道,WriteFile和ReadFile中的两上要发送/接收的字节数,实际发送接收的字节数,具体要怎样设置,特别是后者,给我的感觉不清楚。多谢!!多谢!!
解决方案 »
- delphi读xml,xml中含中文出错!急!在线
- 请教,ADOQuery的SQL语句中该如何比较日期大小?
- 给DLL传递指针参数的问题。
- 花了四五个小时才搞定不需要额外控件的XP风格界面和Listview问题,paint...
- 关于dll的一个小问题!(在线等)
- 菜鸟问题,简单控件的使用,再线ing。。。。
- dxdbgrid没有dxdbgrid.print这样的功能吗???要打印怎么办??不会要用quickreport吧,太凡了(参与者有分)
- Delphi以外的世界有没有控件?
- 尽管来拿分,关于中SQL2000中数据库物理空间的压缩的菜问题
- 玩了18年DELHI,很好的一个语言,没有强大的靠山,我也准备离去了,去学他妈的JS
- 请教pascal中的静态方法可不可以覆盖?
- Delphi程序员的工资状况?
http://www.commlinx.com.au/delphi_comms.htm
http://www.powerba.com/develop/delphi/article/20001019001.htm
SendComFile := CreateFile('COM1',Generic_Write,0,nil,Open_Existing,0,0);
ReceiveComFile := CreateFile('COM2',Generic_Read,0,nil,Open_Existing,0,0);2)设置参数如下:
GetCommState(SendComFile,SendComFileDCB);
SendComFileDCB.BaudRate := 9600;
SendComFileDCB.Parity := NoParity;
SendComFileDCB.ByteSize :=8;
SendComFileDCB.StopBits :=OneStopBit;
SetCommState(SendComFile,SendComFileDCB);
SetupComm(SendComFile,1024,1024);
SetCommMask(SendComFile,EV_RxChar); GetCommState(ReceiveComFile,ReceiveComFileDCB);
ReceiveComFileDCB.BaudRate := 9600;
ReceiveComFileDCB.Parity := NoParity;
ReceiveComFileDCB.ByteSize :=8;
ReceiveComFileDCB.StopBits :=OneStopBit;
SetCommState(ReceiveComFile,ReceiveComFileDCB);
SetupComm(ReceiveComFile,1024,1024);
SetCommMask(ReceiveComFile,EV_TxEmpty);3)点一个按钮:发送语句如下:
SendBuffer := Pchar(MemoSend.Text);
NumberOfWrite := Length(MemoSend.Text);
WriteFile(SendComFile,SendBuffer,NumberofWrite,NumberOfWriten,0);4)点一个按钮,接收请句如下:
BClear := ClearCommError(ReceiveComFile,lpErrors,@ComState);
if BClear then
begin
NumberOfRead := Comstate.cbInQue;
ReadFile(ReceiveComFile,ReceiveBuffer,NumberOfRead,NumberOfReadn,0);
ReceiveBuffer[NumOfRead] = 0;
showmessage(ReceiveBuffer);
end;
给我发个Email:[email protected],
我发给你源代码!帮你搞定!记得给我分,money也行!呵
=========================
欢迎使用 CSDN 论坛助手 ..... [助您多、快、好、爽地上csdn...]
Http://www.ChinaOK.net/csdn/csdn.rar
最新版本:2003年3月2日