UniCB : Prevent too early sending of data, ver. 3.1.1619
This commit is contained in:
@@ -63,7 +63,9 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
byte[] rcvdData; /// Buffer for all recevied but nut processed data. May contain data from several read attempts
|
||||
int[] cumulativeSums; /// Cumulative sums to verify checksums easily
|
||||
int rcvdBytesCount; /// Count of valid bytes in rcvdData buffer
|
||||
int lastReceivedTime; /// StateMachine.Time time stamp of the last received valid frame
|
||||
DateTime lastSentTime; /// Time stamp of the last sent command/request frame
|
||||
DateTime lastReceivedTime; /// Time stamp of the last received valid frame
|
||||
int lastRcvdStMTime; /// StateMachine.Time time stamp of the last received valid frame
|
||||
bool outputsInitialized; /// Flag indicating that outputs were sent at least once
|
||||
|
||||
///
|
||||
@@ -203,7 +205,9 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
/// </summary>
|
||||
public void Initialize()
|
||||
{
|
||||
lastReceivedTime = StateMachine.Time; /// To indicate the serial connection state
|
||||
lastRcvdStMTime = StateMachine.Time; /// To indicate the serial connection state
|
||||
lastSentTime = DateTime.Now;
|
||||
lastReceivedTime = DateTime.Now;
|
||||
|
||||
if (cbCfg.DebugLevel == DebugMode.Normal)
|
||||
{
|
||||
@@ -305,7 +309,8 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
if (anyProcessed)
|
||||
{
|
||||
lastValidOffset = offset;
|
||||
lastReceivedTime = StateMachine.Time;
|
||||
lastRcvdStMTime = StateMachine.Time;
|
||||
lastReceivedTime = DateTime.Now;
|
||||
Debug.WriteLine(msg);
|
||||
log.Debug(msg);
|
||||
}
|
||||
@@ -338,7 +343,7 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
}
|
||||
}
|
||||
|
||||
if (cbCfg.DebugLevel == DebugMode.Normal && (StateMachine.Time - lastReceivedTime) >= 5)
|
||||
if (cbCfg.DebugLevel == DebugMode.Normal && (StateMachine.Time - lastRcvdStMTime) >= 5)
|
||||
{
|
||||
/// No connection to control board ... set indicator bit
|
||||
route |= ((UInt128)1) << cbCfg.BitNr;
|
||||
@@ -369,6 +374,14 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
/// </summary>
|
||||
public void RunDeviceAfter()
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
if (now < lastSentTime + TimeSpan.FromSeconds(0.8) ||
|
||||
(lastReceivedTime < lastSentTime && now < lastSentTime + TimeSpan.FromSeconds(2.5)))
|
||||
{
|
||||
log.Error("RunDeviceAfter() ... skipping too early write of a serial command or a data requect");
|
||||
return;
|
||||
}
|
||||
|
||||
///
|
||||
/// Combine data from the current route and from UI
|
||||
///
|
||||
@@ -450,6 +463,7 @@ namespace TBF.Rig.ControlBoard.Uni
|
||||
if (cbCfg.DebugLevel == DebugMode.Normal)
|
||||
{
|
||||
serialPort.Write(outData, 0, outData.Length);
|
||||
lastSentTime = DateTime.Now;
|
||||
}
|
||||
|
||||
string s = Telegram.LogTelegram("Sent: ", outData);
|
||||
|
||||
Reference in New Issue
Block a user