📄 baseterm.cs
字号:
using System;
using System.Windows.Forms;
using System.IO;
namespace VehicleTrace.COMM
{
public class BaseTerm : CommLine
{
//public static TermForm frm;
public static FrmMain CurForm;
public static BaseTerm term;
public static CommBaseTermSettings settings;
public static string settingsFileName = "";
private int lineCount = 0;
public class CommBaseTermSettings : CommLineSettings
{
public bool showAsHex = false;
public bool breakLineOnChar = false;
public ASCII lineBreakChar = 0;
public int charsInLine = 0;
public static new CommBaseTermSettings LoadFromXML(Stream s)
{
return (CommBaseTermSettings)LoadFromXML(s, typeof(CommBaseTermSettings));
}
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static int Main(string[] args)
{
settingsFileName = Directory.GetCurrentDirectory() + "\\CommBase.xml";
FileInfo f = new FileInfo(settingsFileName);
if (f.Exists)
{
settingsFileName = f.Name;
settings = CommBaseTermSettings.LoadFromXML(f.OpenRead());
if (settings == null)
{
MessageBox.Show("Bad settings file", "CommBase Terminal", MessageBoxButtons.OK);
return 0;
}
}
else
{
settings = new CommBaseTermSettings();
}
term = new BaseTerm();
CurForm = new FrmMain();
term.ComSetup("COM1", 115200);
if (term.Open())
{
CurForm.ShowMsg("Online");
}
Application.Run(CurForm);
return 0;
}
public bool Immediate = false;
public void SendCommand(string s)
{
Send(s);
}
public void SendChar(byte c)
{
try
{
if (Immediate)
SendImmediate(c);
else
Send(c);
}
catch (CommPortException e)
{
CurForm.ShowException(e);
}
}
public void SendFile(FileStream fs)
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
Send(buffer);
}
public bool SendCtrl(string s)
{
ASCII a = 0;
try
{
a = (ASCII)ASCII.Parse(a.GetType(), s, true);
}
catch
{
return false;
}
SendChar((byte)a);
return true;
}
public void setOPTicks(CheckBox chk)
{
switch (int.Parse(chk.Tag.ToString()))
{
case 0:
chk.Enabled = base.RTSavailable;
chk.Checked = base.RTS;
break;
case 1:
chk.Enabled = base.DTRavailable;
chk.Checked = base.DTR;
break;
case 2:
chk.Enabled = true;
chk.Checked = base.Break;
break;
}
}
public void OPClick(CheckBox chk)
{
try
{
switch (int.Parse(chk.Tag.ToString()))
{
case 0: base.RTS = chk.Checked; break;
case 1: base.DTR = chk.Checked; break;
case 2: base.Break = chk.Checked; break;
}
}
catch (CommPortException e)
{
CurForm.ShowException(e);
}
}
public new QueueStatus GetQueueStatus()
{
return base.GetQueueStatus();
}
public new bool IsCongested()
{
return base.IsCongested();
}
public void Settings()
{
//SettingsForm f = new SettingsForm(settings);
//f.ShowDialog();
}
protected override CommBaseSettings CommSettings()
{
CommBaseTermSettings settings = new CommBaseTermSettings();
//cs.SetStandard("COM1:", 115200, Handshake.none);
settings.rxFilter = new ASCII[] { ASCII.LF, ASCII.SOH };
settings.rxTerminator = ASCII.CR;
settings.txTerminator = new ASCII[] { ASCII.CR };
Setup(settings);
return settings;
}
//protected override CommBaseSettings CommSettings()
//{
// settings = new CommBaseTermSettings();
// return settings;
//}
protected override void OnRxChar(byte c)
{
string s; bool nl = false;
ASCII v = (ASCII)c;
if (settings.charsInLine > 0)
{
nl = (++lineCount >= settings.charsInLine);
}
if (settings.breakLineOnChar) if (v == settings.lineBreakChar) nl = true;
if (nl) lineCount = 0;
if (settings.showAsHex)
{
s = c.ToString("X2");
if (!nl) s += " ";
}
else
{
if ((c < 0x20) || (c > 0x7E))
{
s = "<" + v.ToString() + ">";
}
else
{
s = new string((char)c, 1);
}
}
CurForm.ShowChar(s, nl);
}
protected override void OnBreak()
{
CurForm.ShowMsg(">>>> BREAK");
}
protected override bool AfterOpen()
{
//frm.OnOpen();
ModemStatus m = GetModemStatus();
CurForm.SetIndics(m.cts, m.dsr, m.rlsd, m.ring);
return true;
}
protected override void BeforeClose(bool e)
{
if ((settings.autoReopen) && (e))
{
//frm.OnOpen();
}
else
{
//frm.OnClose();
CurForm.ShowMsg(">>>> OFFLINE");
}
}
protected override void OnStatusChange(ModemStatus c, ModemStatus v)
{
CurForm.SetIndics(v.cts, v.dsr, v.rlsd, v.ring);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -