对aardio生成activeX EXE功能的研究学习
新增一个testSio库
import sys.comPort; namespace testSio; var comPorts = ..sys.comPort.list(); getcomPortsNum = function(){ return #comPorts; } getcomPortsName = function(index){ if(#comPorts){ return comPorts[index].portName; } return null; }然后将S
对aardio生成activeX EXE功能的研究学习
调用其他库 ,
新建个test.aardio库,
namespace test; add = function(a,b){ return a+b; }修改Sample.aardio库, 将Add改为引用test.add()
import test; namespace AardioTestControl; class Sample{ ctor(activeX){对aardio生成activeX EXE功能的研究学习
这里重点看下 odl文件 , 文件夹里有个简易的ODL参考手册,
import "ocidl.idl"; [ uuid(84DF16对aardio生成activeX EXE功能的研究学习
复制出所有工程代码, 自己新建个生成activex的工程 , 删除不需要的多余代码, 一步步简化测试.
简化后的 工程:
对aardio生成activeX EXE功能的研究学习
假设有个需求,需要将目前写好的某种控制算法库共享给别人用,他们用的是其他编程软件,如果重新移植一遍就需要花费更多的时间和精力。如果用户那边是c#那么移植到c#就会有算法被还原代码风险,那么就要用c++把算法重新实现一遍生成dll,那么还需要下载安装vs并学c++,反正挺麻烦。
于是考虑将aardio生成的程序通过activex来提供给其他软件使用, 这里研究下.
用这个方法生成的exe注册后, 就和ocx一样的使用方式 , 不仅能提供函数方法也能提供界面控件方式.
这样就可以将aardio里封装的一些方
sciter 资源打包和加载的步骤
新版sciter库里增加了扩展
//archive 解包 import web.sciter.archive;可以直接加载打包文件了.
com.word库分享
因为, COM库有用过这个com.word了......
所以冲突了.
库名可以改为com.wordDoc,就行了
sciter 资源打包和加载的步骤
感谢分享,收藏了
aardio本来就可以内嵌html资源到exe里,
貌似这种方式可以用来隐藏资源文件,不容易被还原ui代码,内嵌res能用pe工具提取ui资源。
aardio调用halcon的HDevEngine来进行视觉处理
经过多次测试总结如下:
利用hdevengine来执行hdev文件的话, 需要下面这些dll
简易C# Excel调用Aspose.Cells
有模板功能,倒是不错。
还有个ClosedXML貌似听说语法最舒服,可以试试。
再次研究videocapX视频摄像头控件
回复#16 @nod32 :
这里提供的是比较老的ocx , 下载最新版试试, 或者用官方例子, 如果官方的也不行, 那就是不支持中文 , 那么还可以变通下,
自己动态生成也透明文字图片, 贴图片.
aardio里贴个plus到摄像头上面,winform.plus.orphanWindow(true)透明,下面图片采用这个方
aardio调用ExcelDataReader.dll来快速读取excel文件
前面讲过npoi和其他的几个excel操作库, 这些程序集操作速度最快的应该是npoi了, 但是有时候需要读取几十万行列的超大数据就有些力不从心了.
网上很多人推荐用ExcelDataReader来读取excel , 轻量, 大数据文件速度更快.
这里进行简单的测试, 由于没有特别大的文件, 就没测试大数据, 有这方面需求的可以自己测试下, 欢迎测试后留言反馈下.
ExcelDataReader开源地址:
利用管道process.popen调用离线版PaddleOCR-json实现文字识别
之前发过调用在线api版本, 这里测试离线版利用管道功能来调用识别.
PaddleOCR官方:
https://gitee.com/paddlepaddle/PaddleOCR
编译了的paddleOCR-json版本地址:
aardio传递到C#中DataTable显示大量数据的优化办法
如题:
之前有写过几个调用dataGridView来显示数据表格的示例,
测试发现如果直接for循环一句一句add会很慢. 代码如下:
//创建随机数据 dataTable.BeginLoadData(); for(i=1;50000;1){ row = dataTable.NewRow(); //第一种方式 row.Item["RowIndex"] = i; row.Item["StringColumn"] = string.random(