Мне необходимо отправить в Com-порт несколько байт информации, я просмотрел рекомендуемые компоненты и примеры и создал код где используются функции CreateFile, WriteFile, GetCommState, SetCommState и запись DCB. Но при попытке записи информации в порт выдаётся ошибка, которая при расшифровке функцией FormatMessage коментируется так: "Невозможно создать файл, так как он уже создан."

Причём при создании файла (функция CreateFile) и работе с атрибутами (функции GetCommState и SetCommState) никаких исключений не происходит...
Ниже расположен участок кода программы:
var
Form1: TForm1;
DCB: TDCB;
Over: OVERLAPPED;
CommHandle: HFILE;
arRData: array [0..4] of Byte;
lpMsgBuf: PChar;
Success: boolean;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Success:=true;
CommHandle:=CreateFile('COM1', GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0);
GetCommState(CommHandle, DCB);
DCB.BaudRate:=CBR_4800;
DCB.Parity:=NOPARITY;
DCB.ByteSize:=8;
DCB.StopBits:=ONESTOPBIT;
DCB.EvtChar:=Char($80);
SetCommState(CommHandle, DCB);
end;
{procedure TForm1.btInitClick(Sender: TObject);
begin
if not (SetCommMask(CommHandle, EV_BREAK)) then
ShowMessage('Неудача загрузки маски!');
if not (SetCommState(CommHandle, DCB)) then
ShowMessage('Неудача загрузки состояния!');
end;}
procedure TForm1.btQueryClick(Sender: TObject);
var
qbytes: Cardinal;
//qbytes: Integer;
WString: PChar;
//pqBytes: ^Integer;
begin
qbytes:=3;
// WString:='T'+MaskEdit1.text+'N';
WString:='T1N';
Success:=WriteFile(CommHandle, WString, qBytes, qBytes, nil {@Over});
if not (Success) then
begin
ShowMessage('Неудача записи в Com-порт!'+'Ошибка:'+IntToStr(GetLastError));
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER + FORMAT_MESSAGE_FROM_SYSTEM,
nil, GetLastError, LANG_SYSTEM_DEFAULT, @lpMsgBuf, 100, nil);
ShowMessage(lpMsgBuf);
end;
end;