From 66388e9e34b6967b686fceaebca28ae5edf46a33 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Thu, 26 Jan 2017 19:55:41 +0000 Subject: [PATCH] Refs #247. Implemented exception catching and handling for low-level COM-port access in MicroBoot's UART communication interface DLL. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@206 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- .../interfaces/uart/XcpTransport.pas | 131 ++++++++++++------ Host/openblt_uart.dll | Bin 2459648 -> 2459648 bytes 2 files changed, 88 insertions(+), 43 deletions(-) diff --git a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas index 7964ab5d..3691a6fd 100644 --- a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas +++ b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas @@ -79,20 +79,24 @@ begin // call inherited constructor inherited Create; + // reset packet length + packetLen := 0; + // create a sci driver instance sciDriver := TComPort.Create(nil); // init sci settings - sciDriver.DataBits := dbEight; - sciDriver.StopBits := sbOneStopBit; - sciDriver.Parity.Bits := prNone; - sciDriver.FlowControl.XonXoffOut := false; - sciDriver.FlowControl.XonXoffIn := false; - sciDriver.FlowControl.ControlRTS := rtsDisable; - sciDriver.FlowControl.ControlDTR := dtrEnable; - - // reset packet length - packetLen := 0; + try + sciDriver.DataBits := dbEight; + sciDriver.StopBits := sbOneStopBit; + sciDriver.Parity.Bits := prNone; + sciDriver.FlowControl.XonXoffOut := false; + sciDriver.FlowControl.XonXoffIn := false; + sciDriver.FlowControl.ControlRTS := rtsDisable; + sciDriver.FlowControl.ControlDTR := dtrEnable; + except + Exit; + end; end; //*** end of Create *** @@ -107,7 +111,6 @@ destructor TXcpTransport.Destroy; begin // release sci driver instance sciDriver.Free; - // call inherited destructor inherited; end; //*** end of Destroy *** @@ -124,6 +127,7 @@ procedure TXcpTransport.Configure(iniFile : string); var settingsIni : TIniFile; configIndex : integer; + baudrateValue: TBaudRate; begin // read XCP configuration from INI if FileExists(iniFile) then @@ -131,30 +135,38 @@ begin // create ini file object settingsIni := TIniFile.Create(iniFile); - // configure baudrate + // read baudrate configIndex := settingsIni.ReadInteger('sci', 'baudrate', 6); - sciDriver.BaudRate := br38400; // init to default value + // init to default baudrate value + baudrateValue := br38400; case configIndex of - 0 : sciDriver.BaudRate := br1200; - 1 : sciDriver.BaudRate := br2400; - 2 : sciDriver.BaudRate := br4800; - 3 : sciDriver.BaudRate := br9600; - 4 : sciDriver.BaudRate := br14400; - 5 : sciDriver.BaudRate := br19200; - 6 : sciDriver.BaudRate := br38400; - 7 : sciDriver.BaudRate := br56000; - 8 : sciDriver.BaudRate := br57600; - 9 : sciDriver.BaudRate := br115200; - 10: sciDriver.BaudRate := br128000; - 11: sciDriver.BaudRate := br256000; + 0 : baudrateValue := br1200; + 1 : baudrateValue := br2400; + 2 : baudrateValue := br4800; + 3 : baudrateValue := br9600; + 4 : baudrateValue := br14400; + 5 : baudrateValue := br19200; + 6 : baudrateValue := br38400; + 7 : baudrateValue := br56000; + 8 : baudrateValue := br57600; + 9 : baudrateValue := br115200; + 10: baudrateValue := br128000; + 11: baudrateValue := br256000; end; - // configure port + // read port configIndex := settingsIni.ReadInteger('sci', 'port', 0); - sciDriver.Port := Format( 'COM%d', [ord(configIndex + 1)] ); // release ini file object settingsIni.Free; + + // set the port and the baudrate + try + sciDriver.Port := Format( 'COM%d', [ord(configIndex + 1)] ); + sciDriver.BaudRate := baudrateValue; + except + Exit; + end; end; end; //*** end of Configure *** @@ -168,8 +180,12 @@ end; //*** end of Configure *** //*************************************************************************************** function TXcpTransport.Connect : Boolean; begin - sciDriver.Open; - result := sciDriver.Connected; + try + sciDriver.Open; + result := sciDriver.Connected; + except + result := False; + end; end; //*** end of Connect *** @@ -196,11 +212,12 @@ end; //*** end of IsComError *** //*************************************************************************************** function TXcpTransport.SendPacket(timeOutms: LongWord): Boolean; var - msgData : array of Byte; - resLen : byte; - cnt : byte; - rxCnt : byte; - dwEnd : DWord; + msgData : array of Byte; + resLen : byte; + cnt : byte; + rxCnt : byte; + dwEnd : DWord; + bytesRead : integer; begin // init the return value result := false; @@ -224,8 +241,12 @@ begin end; // configure transmit timeout. timeout = (MULTIPLIER) * number_of_bytes + CONSTANT - sciDriver.Timeouts.WriteTotalConstant := 0; - sciDriver.Timeouts.WriteTotalMultiplier := timeOutms div (packetLen+1); + try + sciDriver.Timeouts.WriteTotalConstant := 0; + sciDriver.Timeouts.WriteTotalMultiplier := timeOutms div (packetLen+1); + except + Exit; + end; // submit the packet transmission request if sciDriver.Write(msgData[0], packetLen+1) <> (packetLen+1) then @@ -238,14 +259,24 @@ begin Application.ProcessMessages; // confgure the reception timeout. timeout = (MULTIPLIER) * number_of_bytes + CONSTANT - sciDriver.Timeouts.ReadTotalConstant := timeOutms; - sciDriver.Timeouts.ReadTotalMultiplier := 0; + try + sciDriver.Timeouts.ReadTotalConstant := timeOutms; + sciDriver.Timeouts.ReadTotalMultiplier := 0; + except + Exit; + end; // compute timeout time for receiving the response dwEnd := GetTickCount + timeOutms; // receive the first byte which should hold the packet length - if sciDriver.Read(resLen, 1) = 1 then + try + bytesRead := sciDriver.Read(resLen, 1); + except + Exit; + end; + + if bytesRead = 1 then begin // init the number of received bytes to 0 rxCnt := 0; @@ -256,14 +287,24 @@ begin begin // re-confgure the reception timeout now that the total packet length is known. // timeout = (MULTIPLIER) * number_of_bytes + CONSTANT - sciDriver.Timeouts.ReadTotalConstant := 0; - sciDriver.Timeouts.ReadTotalMultiplier := timeOutms div resLen; + try + sciDriver.Timeouts.ReadTotalConstant := 0; + sciDriver.Timeouts.ReadTotalMultiplier := timeOutms div resLen; + except + Exit; + end; // attempt to receive the bytes of the response packet one by one while (rxCnt < resLen) and (GetTickCount < dwEnd) do begin // receive the next byte - if sciDriver.Read(packetData[rxCnt], 1) = 1 then + try + bytesRead := sciDriver.Read(packetData[rxCnt], 1); + except + Exit; + end; + + if bytesRead = 1 then begin // increment counter rxCnt := rxCnt + 1; @@ -291,7 +332,11 @@ end; //*** end of SendPacket *** //*************************************************************************************** procedure TXcpTransport.Disconnect; begin - sciDriver.Close; + try + sciDriver.Close; + except + Exit; + end; end; //*** end of Disconnect *** diff --git a/Host/openblt_uart.dll b/Host/openblt_uart.dll index f7930d5ba8e5a0461a80d9cac84a59c539fa0ce6..b485ef68cfa37abc1c01dccff6a22fdf51e06bee 100644 GIT binary patch delta 38608 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 Kt-Oa)7XAnRBj57? delta 38062 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 R)fRyM8&J66u{dh!{{dvB?`;48