帮帮我吧.....对你们来说很简单的...问题.... ( 积分: 37 )

  • 主题发起人 主题发起人 xiongshao
  • 开始时间 开始时间
X

xiongshao

Unregistered / Unconfirmed
GUEST, unregistred user!
用mscomm通过串口传输wav文件怎么做呀???我把wav文件保存为tmemorystream了...就简单的通过串口传输.一方发送一方接受后能播放就行了.....把源程序让我看看好么????
 
用mscomm通过串口传输wav文件怎么做呀???我把wav文件保存为tmemorystream了...就简单的通过串口传输.一方发送一方接受后能播放就行了.....把源程序让我看看好么????
 
转为Byte向串口发送
 
就是相当于网络播放器,对不对?
一边从网络读数据,一边把读到的数据播放出来;
学习...
 
呵呵.是通过串口.把wav文件保存为流了.想通过mscomm传过去保存为临时文件播放,
现在就是不知道杂传输这个流文件.我保存的是tmemorystream
 
mscomm不是有传输的事件么?
在下面写代码就行了;实在不会的话,按F1帮助;
里面有个例子,说的也不错;
 
那都是用来传输文本的呀....
我现在是传输流文件呀??
不会
帮帮我呀.......
 
看看下面这个例子,传输数据流的程序;
unit FComm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, SPComm, Spin;

type
TF_comm = class(TForm)
Comm1: TComm;
Memo1: TMemo;
Btn_Send: TButton;
Btn_exit: TButton;
Btn_send1: TButton;
Btn_Send2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
procedure Btn_SendClick(Sender: TObject);
procedure Btn_exitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Btn_send1Click(Sender: TObject);
procedure Btn_Send2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_comm: TF_comm;
Viewstring : string;
i:integer;
rbuf,sbuf:array[1..2] of byte;
rP:^integer;
commflg:boolean;

implementation
{$R *.DFM}

{打开串口}
procedure TF_comm.FormCreate(Sender: TObject);
begin
comm1.StartComm;
end;
{关闭串口}
procedure TF_COMM.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;

{发送数据 }
procedure SendData;
var
i:integer;
begin
viewstring:=' ';
commflg:=true;
for i:=1 to 2 do begin
if not F_Comm.comm1.writecommdata(@sbuf,1) then
begin
commflg:=false;
break;
end;
sleep(2); {发送时字节间的延时}
viewstring:=viewstring+inttohex(sbuf,2)+' ';
end;
viewstring:='发送'+viewstring;
F_Comm.memo1.lines.add(viewstring);
F_Comm.memo1.lines.add(');
if not commflg then messagedlg('发送失败!',mterror,[mbyes],0);
end;

{接收过程}
procedure TF_COMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
var
i:integer;
begin
viewstring :=';
rP := @rbuf;
move(buffer^,pchar(rP^),bufferlength);
for i:=1 to bufferlength do begin
viewstring :=viewstring+inttohex(rbuf,2)+';
end;
viewstring:='接受'+viewstring;
memo1.lines.add(viewstring);
memo1.lines.add(');
end;

procedure TF_comm.Btn_exitClick(Sender: TObject);
begin
{ comm1.StopComm; }
F_comm.Close;
end;
procedure TF_comm.Btn_send1Click(Sender: TObject);
begin
sbuf[1]:=byte($01); {地址}
sbuf[2]:=byte($0A); {结束符}
senddata;{调用发送函数}
end;

procedure TF_comm.Btn_Send2Click(Sender: TObject);
begin
sbuf[1]:=byte($02); {地址}
sbuf[2]:=byte($0A); {结束符}
senddata;{调用发送函数}
end;
procedure TF_COMM.Btn_sendClick(Sender: TObject);{发送按钮的点击事件}
begin
Btn_send1Click(Sender);
Sleep(300);
Btn_send2Click(Sender);
end;
 
太谢谢你了....
但我还有点不明白viewstring 定义的是string???
这个和流不一样呀.能通用么???
 
后退
顶部