希望达到的效果就是:平台发出读卡指令,可以调用任意品牌的ic卡读卡机。调用开门指令可以控制接入平台任意品牌的门锁。
现有条件:可以搭建一个平台,平台定一个通信标准,接入平台的各个品牌的IC卡读卡机,门禁设备要根据通信标准进行改造。
问题:如何定这个通信标准比较合适,各个厂家改动最少。
C#如何控制多个品牌的IC卡读卡机和门禁设备
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2015-08-17 09:09关注
给你一个简化的原型例子:
按照如下步骤进行:新建一个dll,叫做ReaderBaseLib,这个是一个公共的接口,你的主程序和所有的插件都引用它。
在里面编写如下的代码:
public interface IReaderBase
{
int GetID();
}编译。
然后编写一个实现dll,新建一个类库,叫ReaderALib
项目 添加引用 引用ReaderBaseLib
编写代码
public class Reader : IReaderBase
{
public int GetID
{
//实现代码
return 1;
}
}
注意,修改namespace为 Reader如法炮制,写一个ReaderBLib的dll
public class Reader : IReaderBase
{
public int GetID
{
//实现代码
return 2;
}
}
也把命名空间修改为Reader新建一个exe项目作为主程序,引用 IReaderBase,注意,不要引用 ReaderA ReaderB
为了简化起见,读取配置文件的代码省略,这里直接从字符串读取void Main()
{
string dllname = "ReaderALib.dll";
Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "\" + dllname);
object instance = assembly.CreateInstance("Reader.Reader");
IReaderBase r = instance as IReaderBase;
Console.WriteLines(r.GetID());
}把所有的dll exe放在一起运行
注意,把程序里的ReaderALib.dll修改为ReaderBLib.dll,输出就变成2了。解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器