小编Tho*_*nes的帖子

如何使用.NET/C#进行强大的SerialPort编程?

我正在编写一个Windows服务,用于与串行磁条读取器和中继板(访问控制系统)进行通信.

在另一个程序通过打开与我的服务相同的串行端口"中断"进程后,我遇到代码停止工作的问题(我得到IOExceptions).

部分代码如下:

public partial class Service : ServiceBase
{
    Thread threadDoorOpener;
    public Service()
    {
        threadDoorOpener = new Thread(DoorOpener);
    }
    public void DoorOpener()
    {
        while (true)
        {
            SerialPort serialPort = new SerialPort();
            Thread.Sleep(1000);
            string[] ports = SerialPort.GetPortNames();
            serialPort.PortName = "COM1";
            serialPort.BaudRate = 9600;
            serialPort.DataBits = 8;
            serialPort.StopBits = StopBits.One;
            serialPort.Parity = Parity.None;
            if (serialPort.IsOpen) serialPort.Close();
            serialPort.Open();
            serialPort.DtrEnable = true;
            Thread.Sleep(1000);
            serialPort.Close();
        }
    }
    public void DoStart()
    {
        threadDoorOpener.Start();
    }
    public void DoStop()
    {
        threadDoorOpener.Abort();
    }
    protected override void OnStart(string[] args) …
Run Code Online (Sandbox Code Playgroud)

.net c# serial-port

26
推荐指数
1
解决办法
5万
查看次数

如何在c#中的List <SomeStruct>()中覆盖每个列表项的序列化名称?

我有一个或多或少像这样的结构:

[Serializable]
[XmlRoot("Customer")]
public struct TCustomer
{
  string CustomerNo;
  string Name;
}
Run Code Online (Sandbox Code Playgroud)

我有时将此结构序列化为XML作为单个对象,它工作正常,但我有时也需要序列化此结构的List <>.

我用它来设置顶级元素名称:

[Serializable]
[XmlRoot("Customers")]
public class CustomerList : List<TCustomer> { }
Run Code Online (Sandbox Code Playgroud)

但是,XmlSerializer坚持要调用每个列表项TCustomer.如何告诉XmlSerializer使用Customer而不是TCustomer?

c# generics struct list xmlserializer

5
推荐指数
3
解决办法
6481
查看次数

使用BDE和Delphi访问dBase文件的好方法是什么?

首先,我必须声明,对于Delphi来说,我是一个完整的新手,虽然我在学校做了一些Turbo Pascal编程,大约十四年前......

我有一个商业Delphi程序,它使用dBase数据库和BDE来访问它们.我基本上需要将用C#编写的另一个应用程序连接到这个数据库,以便能够执行诸如select,insert,update和delete之类的SQL操作.

不幸的是,针对dBase使用OLEDB导致索引损坏,只有原生BDE应用程序似乎能够安全地访问数据.

一般的想法是创建一个简单的Delphi控制台应用程序,它可以从标准输入(Read/ReadLn)读取SQL语句,并将CSV数据输出到标准输出(WriteLn).

我该怎么做呢?

我已成功获得简单的TTable访问权限,使用以下代码:

tbl := TTable.Create(nil);

tbl.DatabaseName := 'Exceline';
tbl.TableName := 'KUNDE.DBF';
tbl.Active := True;

WriteLn(tbl.RecordCount);

tbl.Active := False;
Run Code Online (Sandbox Code Playgroud)

有没有办法实现相同但通过执行直接SQL语句?

delphi dbase bde

1
推荐指数
1
解决办法
2077
查看次数

标签 统计

c# ×2

.net ×1

bde ×1

dbase ×1

delphi ×1

generics ×1

list ×1

serial-port ×1

struct ×1

xmlserializer ×1