本文整理汇总了C#中ICommsSerial.ReadExisting方法的典型用法代码示例。如果您正苦于以下问题:C# ICommsSerial.ReadExisting方法的具体用法?C# ICommsSerial.ReadExisting怎么用?C# ICommsSerial.ReadExisting使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICommsSerial
的用法示例。
在下文中一共展示了ICommsSerial.ReadExisting方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: doConnect
public bool doConnect(ICommsSerial comPort)
{
try
{
// clear buffer
comPort.DiscardInBuffer();
// setup a known enviroment
comPort.Write("\r\n");
// wait
Sleep(1100);
// send config string
comPort.Write("+++");
// wait
Sleep(1100);
// check for config responce "OK"
log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate);
string conn = comPort.ReadExisting();
log.Info("Connect first responce " + 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");
string version = doCommand(comPort, "ATI");
log.Info("Connect Version: " + version.Trim() + "\n");
Regex regex = new Regex(@"SiK\s+(.*)\s+on\s+(.*)");
if (regex.IsMatch(version))
{
return true;
}
return false;
}
catch { return false; }
}
示例2: doCommand
public string doCommand(ICommsSerial comPort, string cmd, bool multiLineResponce = false, int level = 0)
{
if (!comPort.IsOpen)
return "";
comPort.DiscardInBuffer();
lbl_status.Text = "Doing Command " + cmd;
log.Info("Doing Command " + cmd);
comPort.Write(cmd + "\r\n");
comPort.ReadTimeout = 1000;
// command echo
var cmdecho = Serial_ReadLine(comPort);
if (cmdecho.Contains(cmd))
{
var value = "";
if (multiLineResponce)
{
DateTime deadline = DateTime.Now.AddMilliseconds(1000);
while (comPort.BytesToRead > 0 || DateTime.Now < deadline)
{
try
{
value = value + Serial_ReadLine(comPort);
}
catch
{
value = value + comPort.ReadExisting();
}
}
}
else
{
value = Serial_ReadLine(comPort);
if (value == "" && level == 0)
{
return doCommand(comPort, cmd, multiLineResponce, 1);
}
}
log.Info(value.Replace('\0', ' '));
return value;
}
comPort.DiscardInBuffer();
// try again
if (level == 0)
return doCommand(comPort, cmd, multiLineResponce, 1);
return "";
}
示例3: doCommand
public string doCommand(ICommsSerial comPort, string cmd, int level = 0)
{
if (!comPort.IsOpen)
return "";
comPort.ReadTimeout = 1000;
// setup to known state
comPort.Write("\r\n");
// alow some time to gather thoughts
Sleep(100);
// ignore all existing data
comPort.DiscardInBuffer();
lbl_status.Text = "Doing Command " + cmd;
log.Info("Doing Command " + cmd);
// write command
comPort.Write(cmd + "\r\n");
// read echoed line or existing data
string temp;
try
{
temp = Serial_ReadLine(comPort);
}
catch { temp = comPort.ReadExisting(); }
log.Info("cmd " + cmd + " echo " + temp);
// delay for command
Sleep(500);
// get responce
string ans = "";
while (comPort.BytesToRead > 0)
{
try
{
ans = ans + Serial_ReadLine(comPort) + "\n";
}
catch { ans = ans + comPort.ReadExisting() + "\n"; }
Sleep(50);
if (ans.Length > 1024)
{
break;
}
}
log.Info("responce " + level + " " + ans.Replace('\0', ' '));
Regex pattern = new Regex(@"^\[([0-9+])\]\s+",RegexOptions.Multiline);
if (pattern.IsMatch(ans))
{
Match mat = pattern.Match(ans);
ans = pattern.Replace(ans,"");
}
// try again
if (ans == "" && level == 0)
return doCommand(comPort, cmd, 1);
return ans;
}
示例4: upload_xmodem
bool upload_xmodem(ICommsSerial comPort)
{
// try xmodem mode
// xmodem - short cts to ground
try
{
uploader_LogEvent("Trying XModem Mode");
//comPort.BaudRate = 57600;
comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate;
comPort.ReadTimeout = 1000;
Thread.Sleep(2000);
var tempd = comPort.ReadExisting();
Console.WriteLine(tempd);
comPort.Write("U");
Thread.Sleep(1000);
var resp1 = Serial_ReadLine(comPort); // echo
var resp2 = Serial_ReadLine(comPort); // echo 2
var tempd2 = comPort.ReadExisting(); // posibly bootloader info / use to sync
// identify
comPort.Write("i");
// responce is rfd900....
var resp3 = Serial_ReadLine(comPort); //echo
var resp4 = Serial_ReadLine(comPort); // newline
var resp5 = Serial_ReadLine(comPort); // bootloader info
uploader_LogEvent(resp5);
if (resp5.Contains("RFD900"))
{
// start upload
comPort.Write("u");
var resp6 = Serial_ReadLine(comPort); // echo
var resp7 = Serial_ReadLine(comPort); // Ready
if (resp7.Contains("Ready"))
{
comPort.ReadTimeout = 3500;
// responce is C
var isC = comPort.ReadByte();
var temp = comPort.ReadExisting();
if (isC == 'C')
{
XModem.LogEvent += uploader_LogEvent;
XModem.ProgressEvent += uploader_ProgressEvent;
// start file send
XModem.Upload(@"SiK900x.bin",
comPort);
XModem.LogEvent -= uploader_LogEvent;
XModem.ProgressEvent -= uploader_ProgressEvent;
return true;
}
}
}
}
catch (Exception ex2)
{
log.Error(ex2);
}
return false;
}