public bool doConnect(ICommsSerial comPort)
{
try
{
Console.WriteLine("doConnect");
var trys = 1;
// setup a known enviroment
comPort.Write("ATO\r\n");
retry:
// wait
Sleep(1500, comPort);
comPort.DiscardInBuffer();
// send config string
comPort.Write("+");
Sleep(200, comPort);
comPort.Write("+");
Sleep(200, comPort);
comPort.Write("+");
Sleep(1500, comPort);
// check for config response "OK"
log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate);
// allow time for data/response
if (comPort.BytesToRead == 0 && trys <= 3)
{
trys++;
log.Info("doConnect retry");
goto retry;
}
var buffer = new byte[20];
var len = comPort.Read(buffer, 0, buffer.Length);
var conn = Encoding.ASCII.GetString(buffer, 0, len);
log.Info("Connect first response " + conn.Replace('\0', ' ') + " " + conn.Length);
if (conn.Contains("OK"))
{
//return true;
}
else
{
// cleanup incase we are already in cmd mode
comPort.Write("\r\n");
}
doCommand(comPort, "AT&T");
var version = doCommand(comPort, "ATI");
log.Info("Connect Version: " + version.Trim() + "\n");
var regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)");
if (regex.IsMatch(version))
{
return true;
}
return false;
}
catch
{
return false;
}
}