返回列表 发帖

[LIS] Sysmex抛弃dll自己用代码画图的方法【仅供参考】

本帖最后由 约翰羊 于 2017-8-24 16:55 编辑

声明:本人研究只用于学习画图方法,未用于商业用途。如果侵犯到相关权益,请通知我,马上删除。
一直以来,如何用自己的代码来解析Sysmex散点图是一件很难的事情。之前听到肖总说研究出来了,我也跃跃欲试。

从五一假期开始研究,到5月中旬,研究出来了。当时发了一贴,只是介绍了一些画图的内容,没有教画图的部分,因为我也不清楚这个到底能不能发,该不该发。所以贴子就没有画图的内容,后来觉得既然没有画图的代码,那跟耍流氓,炫耀没区别,就删了。

现在觉得还是发吧,都研究出来了,烂肚子里,不如发出来,方便大家。

另一个声明:本人只是尝试画图,对于由此例子引发的一切责任均不负责。

我只告诉你我的研究成果,怎么用还要看个人。


话不多说,上代码。写这个贴子,再不放代码,就是耍流氓了。
收费附件: drawSysmexScat.rar


我的环境是python 3.x + pyqt5,如果要跑,需要类似的环境。当然如果厉害,可以直接看源代码,不过那可就太难了。
源码中附送4个128*128图像数据,1个256*256图像数据。


数据测试的很少,不知道是不是别的数据也能正常解析。如果有问题,咱们一起研究。

不要在意其中一些变量的名字,我真不知道该叫什么好,按我的理解起的名字,不一定准确,所以不要通过变量名来看程序,会误导你的。我也很无奈,不知道该起什么名字。

代码没经过什么优化,我一时半会也用不上,大家看情况,自己优化吧。

代码的来源分两部分,一是我设置了一个只有添加没有删除权限的文件夹,调用dll写入图片,得到了一些原始图片,并进行了分析。还有就是自己对原始数据进行了分析,确定了一些关键位置数据。最后就是反汇编看了dll的内容。

我特意查了查网上反向工程的法律责任,好像是没有明确的界定。我没有修改dll,也没有用于任何商业用途,DLL文件也是满天飞的。所以不知道是不是有法律责任,如果有,请通知我,我马上删除这个贴子。

综合以上的研究之后,用java和python改写的。这次放上来python。希望大家也能多用python,这个确实挺好用的。

sysmex 的dll是用C写的,其中大量的byte,dword,等等类型。还有移位,与,或,操作,我基本上用字符串改写了,不是python操作不了,只是我喜欢这么写,咋地。另外还有个java版,用的是与或异或这些操作。为了推广python,我就不放java版了。


-------------------------------------------分隔线-----------------------------------
关于研究的一些过程

我最开始研究是从反汇编开始的,但是发现真特么看不懂啊,放弃。然后转向分析数据,为了找到对应的关系,我建了一个文件夹,只允许写入,不允许删除,于是我得到了dll生成的bmp文件,就是从这个bmp文件,分析出了很多有用的东西。

之后开始分析数据,首先是发现了其中的乱码不乱,全是十六进制的数。然后通过替换其中的“0”,发现了数据头部有规律的数据块,我暂且称之为“色表”。其次发现数据是顺序排列点的描述,不是有颜色点的描述。也就是说不管这个点有没有颜色,在数据中都有记录。

之后写了一个程序,调用dll文件,数据中每一位都从“0”取到“f",查看生成图片的变化,研究数据代表的含义,研究了上万张图片,没有结果。

之后,又开始回到反汇编的路上,于是...........此处省去n万字。

大概的内容算是研究出来了。


大概我再说一下画图的过程。

首先是按数据生成色表,这个色表每个图是不一样的,我数据少,没比对过,如果每种图的色表固定,这样也可以省去从数据生成色表的步骤。
色表中包含了一个”特征代码“和一个识别代码,共同组成色表与数据中的对应关系,然后还有一个影响颜色等等的标识。

从色表之后的数据开始,每8位一截取,而且这个截取并不是8位取完,取下一个8位,瞎举个例子。123456789A12,第1次取的时候是87654321,第2次是98765432,第3次是,A9876543这样。

通过截取部分与色表中的每个色表比对,可以找到对应的色表,再从色表中取取标识位,通过与截取出来字符串的一些运算,得到要画n个连续的点,还是要画1个有颜色的点。

过程看代码吧,说不清楚。




愿天下没有难画的散点图


散点图镇楼!
sysmex_bypython.png
2017-6-11 23:53

drawSysmexScat.rar (12.07 KB)

售价: 金币 1 枚  [记录]  [购买]

信息安全二.zip (22.59 MB)

信息安全二.zip (22.59 MB)

收藏 0
我思考,我表达
#####  有事情找我的朋友,请加我QQ7106437,论坛的消息功能不太好用,我经常看不到站内消息。#####

难免有错误,有什么写错,说错的,请留言,我会更正。
我思考,我表达
#####  有事情找我的朋友,请加我QQ7106437,论坛的消息功能不太好用,我经常看不到站内消息。#####

TOP

再说一句,结果不重要,甭管是用什么方法,都能画出来图,甚至我觉得dll文件更方便,更快,更安全。我个人也推荐继续用dll画图。

我觉得吧,重要的是过程,虽然痛苦,但结果是幸福的,你们想象不到,我自己画出图那一瞬间的喜悦之情。

Python是个好工具,太特么方便了~~~
我思考,我表达
#####  有事情找我的朋友,请加我QQ7106437,论坛的消息功能不太好用,我经常看不到站内消息。#####

TOP

这个必须顶{:1_622:}

TOP

老羊厉害啊!!!
你这是要准备要上天啊?
医疗IT界民工,12年经验。
HRP\HIS(含CIS)\LIS\PEIS\PACS\CP\PASS\BIS

TOP

回复 5# sunyp001

我也觉得自己很厉害
我思考,我表达
#####  有事情找我的朋友,请加我QQ7106437,论坛的消息功能不太好用,我经常看不到站内消息。#####

TOP

https://github.com/airbnb/superset
和这个一起做吧,用web画图
云计算机

TOP

回复 7# ericdai


   这是什么?
我思考,我表达
#####  有事情找我的朋友,请加我QQ7106437,论坛的消息功能不太好用,我经常看不到站内消息。#####

TOP

使劲敲键盘,敲一个大大的
TLP

TOP

返回列表