hd2y 博客

hd2y 博客

通讯中的编码问题
发表于2019-05-28|C#LIS
通讯中的编码问题这里的LIS接口通讯主要指的是串口(RS232)/网口(TCP或UDP)通讯,而串口或网口通讯中,我们经常会遇到乱码或结果解析错误的问题,那么我们应该怎样做才能避免这些问题呢? 首先我们要知道,想要开发接口特别是双工接口,首先要能读懂接口的通讯文档,而通讯文档中经常会有所使用通讯协议的介绍,流入ASTM、HL7。 而通讯协议一般都制定了编码字符集,比如ASCII、UTF-8、GBK等,虽然字符编码的概念是基础,我们都能理解,但是也不能确保顺利的开发出接口,我们还需要了解HEX、控制字符、校验等。 字符编码首先,字符编码(Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。 常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。 ASCII码使用指定的7位或8位二进制数组合来表示128或25...
串口通讯调试与开发
发表于2019-05-21|C#LIS
工作中,LIS系统经常需要开发接口与仪器或流水线对接,串口通讯应该是最常见的几种通讯方式之一了。 至于串口是什么、串口通讯又是什么,这些基本概念就不多做介绍了。 这里就针对于我在串口开发中碰到过的一些问题,做一个简单的分享。 串口模拟无论是开发还是测试,肯定都离不开串口的模拟测试,我们不大可能直接在电脑上安装两个串口,所以模拟串口就是最优解了,从网上可以很轻松的搜索到模拟串口的软件。 这里我建议使用Virtual Serial Port Driver,大家可以搜索VSPD下载: 安装什么的就不过多解释了,安装完成后我们可以打开并添加模拟串口或者删除模拟的串口,界面如下: 如果对应的串口被使用,也可以从这里看出其串口的状态: 当然我们可以在我们的电脑中查看现有的串口,设备管理器中可以查看: 串口调试工具串口调试工具就是用于串口数据接收/发送的工具软件,比较简单易用的是“串口调试助手V2.2”。 但是使用中有几点需要注意: 偶尔会发生崩溃,这是串口调试工具的问题; 只能使用COM1-COM4这几个串口,有局限性; 与某些需要检测串口监听状态的仪器连接,虽然已经打...
如何修复损坏的SQLite数据库文件
发表于2019-05-21|数据库
最近处理过一个SQLite数据库因为未知原因损坏,无法进行数据操作的而导致软件无法正常使用的问题。 虽然工具软件是基于Code First开发,可以直接删除数据库来重新生成数据文件,但是因为里面存储了很多基本参数,运维人员认为重新设置这些参数比较麻烦,所以希望能够提供一个方案来修复已经损坏的数据库。 和运维沟通后将数据库文件导回,尝试跟踪问题。从网上查询到解决方案,这里简单做一个记录。 排查使用SQLite数据库管理工具SQLite Studio进行数据查询操作,访问正常,尝试直接删除某一个表的数据出现如下错误提示: 1[10:42:22] Error while executing SQL query on database 'data': database disk image is malformed 从网上查找如何排查错误,发现一个语句可以对SQLite数据库进行检测: 1PRAGMA integrity_check; 以上语句是执行整个库的完全性检查,会查看错序的记录、丢失的页,毁坏的索引等。 执行后我获得的信息是: 1234567891011...
Web下打印体验最好的打印控件LODOP
发表于2019-05-16|分享
什么是LODOPLODOP是BS架构打印的解决方案,支持绝大多数浏览器,如果网站上有打印的需求,推荐使用该工具进行打印。 选择LODOP的原因不仅仅在于其对于web打印有着比原生打印更好的打印体验,主要是其还提供了丰富的API,让开发者可以访问打印任务的状态以及打印机的状态,设置打印机与打印输出的属性等等,让开发者可以通过这些实现更多的用户需求。 另外看了官网云打印,之前一直以为必须安装控件才能打印,所以应该是对于设备和系统有要求,但是目前来看也是不限制的,甚至可以使用移动端发送打印请求,但是我没有这方面的使用需求,这里仅仅讨论Windows平台下的打印使用经验。 官方网站:http://www.lodop.net/ LODOP安装使用在官网里下载中心中我们可以下载到打印控件(产品下载)与JS调用打印控件的API(技术手册),并且产品下载的内容包含测试的样例。 因为官方给的例子中已经有详细的安装以及使用说明,所以这里不做赘述,可以进入下载中心下载解压后直接查看样例,样例1就是安装以及基本的使用说明,其他的样例是一些常见的使用场景。 强烈建议加入售后群,LODOP的售后人员回答问题...
利用Jint在C#中运行JS脚本并实现简单计算器
发表于2019-05-06|C#分享
关于JintJint是一个开源的JS脚本引擎,可以让我们在dotnet平台运行js代码,这使我们可以通过这一特性处理很多工作。 关于Jint的更多信息和用例可以参考:https://github.com/sebastienros/jint Jint的用途数学运算在日常工作中存在一个需求:用户自己定义表达式,系统根据表达式替换表达式中项目的数值,计算生成另外一个项目的结果。 例如:[GLO] = [TP] - [ALB],已知[TP]与[ALB]的结果,需要我们求出[GLO]的结果。 这个表达式初看其实很简单,但是实际业务中,可能存在多层级的嵌套甚至次幂/开根号/自然对数等的运算,这样如果通过程序来解析表达式进行运算工作量比较大。 过去程序设计是在Web端触发特定事件后通过正则替换表达式中参与运算项目为实际数值,使用eval函数执行表达式,获取结果并保存到数据库。但是随着系统不断升级,仅仅依靠前端来更新结果,在某些情况下不够人性化而且不能满足需求。 检索关于算术运算,网上普遍推荐的方案是: 使用数据库拼接SQL语句; 通过C#反射实现类似js的eval函数效果...
C#中实现简单爬虫项目
发表于2019-04-10|C#
什么是爬虫爬虫即网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 我们日常使用的搜索引擎、比价网站等都是通过爬虫技术获取数据,而后经数据提取、分析、优化后供用户使用。当然日常生活中,我们也可以使用爬虫技术,获取我们感兴趣的网站进行数据解析分析,做出来一些有意思的功能或小工具,比如新闻提醒、事项通知、资料整理等。 这方面我们需要了解的技术主要是:Http请求、XPath、正则等。以下是一个简单的例子,用于获取京东商城的数据,例子仅供学习。 抓取京东所有商品类别流程 分析京东商品类别页面 Chrome浏览器打开页面:https://www.jd.com/allsort.aspx 查看页面源代码 用XPath分析商品类别信息,包括分类ID、分类名、链接,XPath语法可参考:http://www.w3school.com.cn/xpath/xpath_syntax.asp 获取数据 使用 System.Net.WebRequ...
入手Kindle
发表于2019-04-07|日常
“好读书”从小到大,自认为自己是一个不爱看书的人(网文除外),但是身为一个程序员,誓要向dalao看齐的人一直想培养一个良好的阅读习惯。 在工作的前期曾经购置了很多书,包括C#、JavaScript、Oracle的工具书还有一些名著、散文、豆瓣推荐等很多书,但是因为不方便携带,很多都在搬家的过程中遗失了,或者带回老家垫桌脚了。 从那以后,每次京东和当当有活动,都要纠结着要不要再剁手买几本,最后都忍了,因为这些书并不方便携带,而且选择困难症的我经常会纠结外出的时候带哪本书好。 “Kindle”软件Kindle其实已经流行了好多年,但是身边认识的小伙伴几乎没有上手过的,所以也只是听说,知道有个“墨水屏”的技术。 真正用Kindle,是因为之前在Telegram发现了一个群,每天都会分享一些好书。开始用一个PC版基于Python开发的阅读软件,但是体验不好,使用没多久就放弃了。后来想起来Kindle好像可以在PC或移动设备上安装,于是便下载体验了一下,不得不说——真香,在手机、平板、PC上都安装了Kindle的软件。 而在体验了一段时间,很正常的操作是,买了Kindle Unlimit...
23种设计模式与常用设计模式
发表于2019-04-07|C#
设计模式设计模式设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 目的是为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式三大类型设计模式分为三种类型,共23类。 创建型模式:创建型模式用来处理对象的创建过程,单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 结构型模式:结构型模式用来处理类或者对象的组合,适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 行为型模式:行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。 单例模式单例模式(Singleton Pattern)保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。 实现方式饿汉式第一时间创建实例 123456789101112131415161718192021222324252627282930313233343536373839404142434445464...
设计模式六大原则
发表于2019-04-07|C#
单一职责原则(Single Responsibility Principle 简称 :SRP) 定义:应该有且仅有一个原因引起类的变更。 接口的职责在设计时应该做到单一,降低类的复杂性,实现的职责都有明确的定义,提高了可读性、可维护性、可扩展性; 变更引起的风险降低,如果接口隔离性做的好,一个接口的修改只对相应实现类有影响,对其它接口没有影响,降低了耦合性。 单一职责提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计的是否优良,但是“职责”或“变化原因”都是不可度量的,因项目而异,因环境而异。 里氏替换原则(Liskov Substitution Principle 简称:LSP) 定义:是面向对象设计的基本原则之一,只要父类能出现的地方子类就能出现,而且替换为子类也不会产生任何错误或异常。 子类必须完全实现父类的方法 子类可以有自己的个性 覆盖或实现父类的方法时输入参数可以被放大 覆盖或实现父类的方法时输出结果可以被缩小 优点: 代码共享,减少创建类的工作量 提高代码的重用性 子类可以形似父类,但又异于父类 提高代码的可扩展性 提高产品或项目的开放性...
AOP 面向切面编程
发表于2019-04-06|C#
AOP 面向切面编程与 OOP 面向对象编程的关系AOP(Aspect-Oriented Programming,面向方面编程),可以说是 OOP(Object-Oriented Programing ,面向对象编程)的补充和完善。 OOP 引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP 则显得无能为力。也就是说, OOP 允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在 OOP 设计中,它导致了大量代码的重复,而不利于各个模块的重用。 而 AOP 技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。 所谓“方面”,简单地说,就是将那些与业务无关,却为...
1…567…9
avatar
hd2y
记录技术、生活与思考
文章
84
标签
78
分类
13
Follow Me
公告
This is my Blog
最新文章
C# 中表达式计算问题2020-12-07
ASP.NET Core - 001 源码编译与调试2020-11-29
ASP.NET Core - 000 开发环境配置2020-11-22
迁移 Web Service 项目到 .NET Core2020-09-25
环境部署2020-05-26
分类
  • C#49
    • LIS4
      • 分享1
    • 分享9
  • LIS2
  • MacOS2
  • 分享11
    • MacOS2
标签
标识枚举 瑞美 Fody 依赖注入 Expression Chrome GitHub Daily Note MacOS 正则 日志 NLog 元组 WinForm NHibernate IE Flags MVC 公告 Enum SqlServer RESTful UI Caddy WPF MySQL 动态链接库 nexus 虚拟机 贝克曼 Autofac UML Access 授权 Linux decimal SQLite GDI 散点图
归档
  • 十二月 2020 1
  • 十一月 2020 2
  • 九月 2020 1
  • 五月 2020 2
  • 四月 2020 5
  • 三月 2020 2
  • 二月 2020 2
  • 一月 2020 2
网站信息
文章数目 :
84
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2019 - 2026 By hd2y框架 Hexo 8.1.2|主题 Butterfly 5.7.0
浙ICP备2023016181号-1  |  浙公网安备 33011002017180号