Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
27.04.2015
Размер:
147.21 Кб
Скачать

Листинг программы по передаче данных:

unit RS232;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, ComCtrls, DBCtrls, ActnList, Spin, Buttons, ToolWin,

ImgList, TeEngine, Series, TeeProcs, Chart, TeeFunci, Grids, Calendar,

mAPI,MPlayer;

type

TForm1 = class(TForm)

Label3: TLabel;

Start_TxD: TButton;

procedure FormCreate(Sender: TObject);

procedure TxD_Serial_DATA;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Start_TxDClick(Sender: TObject);

private

{ Private declarations }

hCOM:tHandle;

Stat:tCOMStat;

Bytes:dWord;

DataArrayByte:array[1..32] of byte;

DataArrayChar:array[1..32] of AnsiChar;

j_mass:Word;

public

{ Public declarations }

end;

const

Const_x=2;

var

Form1: TForm1;

implementation

{$R *.DFM}

//##############################################

Procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

ShowMessage('Позаботьтесь о сохранении файла данных');

CloseHandle(hCOM);

end;

//##############################################

//##############################################

procedure TForm1.FormCreate(Sender: TObject);

var

DCB:tDCB;

fSuccess:boolean;

begin

Stat.cbInQue:=0;

// открываем COM-port

hCOM:=CreateFile('COM1',GENERIC_READ or GENERIC_WRITE,0,

nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

if hCOM=INVALID_HANDLE_VALUE then begin

ShowMessage('Не могу открыть порт');

Application.Terminate;

end;

// параметры COM-Port_a

SetupComm(hCOM,8192,8192);

EscapeCommFunction (hCOM, SETDTR);

EscapeCommFunction (hCOM, SETRTS);

try

fSuccess:=GetCommState(hCOM,DCB);

with DCB do begin

// BaudRate:=115200; //инициализация

BaudRate:=9600; //инициализация

ByteSize:=8; //последовательного

Parity:=NoParity; //порта

StopBits:=OneStopBit; //

end;

fSuccess:=SetCommState(hCOM,DCB);

except

ShowMessage('Не удалось настроить порт');

end;

end;

//##############################################

procedure TForm1.Start_TxDClick(Sender: TObject);

begin

TxD_Serial_DATA;

end;

//##############################################

Procedure TForm1.TxD_Serial_DATA;// транслируем в COM-port

var

n_byte:Byte; //число транслируемых байт

begin

// Формируем в массиве DataArrayChar сообщение: /Side_2/

//Char-символами, соответственно кодовой таблице Windows (CP-1251)

DataArrayByte[1]:=$30;

DataArrayByte[2]:=$31;

DataArrayByte[3]:= $32;

DataArrayByte[4]:= $33;

DataArrayByte[5]:=$60;

DataArrayByte[6]:=$78;

j_mass:=1;

for n_byte:= 1 to 6 do begin

WriteFile(hCOM,DataArrayByte[j_mass],1,Bytes,nil);

j_mass:=j_mass+1;

end;

//В конце сообщения добавляем символ dec_13/CR(возврат каретки

//или конец строки)...

DataArrayByte[1]:=$0D;

WriteFile(hCOM,DataArrayByte[1],1,Bytes,nil);

end;

//##############################################

END.

Вывод: В ходе выполнения работы были изучены принципы организации асинхронного обмена в последовательных каналах передачи данных. Приобретены практические навыки программирования асинхронных приемопередатчиков (UART).

Соседние файлы в папке Интерфейсы