https://youtu.be/nIKhUizkXxA?si=tmYzMywXETWHOeDm
2023年10月26日 星期四
button doorbell ESD Protection Circuits protection zener TVS uClamp3301D BAT54S BAV99 1N4148W AN015 - Input Protection Circuits
https://electronics.stackexchange.com/questions/663623/mcu-input-pin-protection
button ESD Protection Circuits doorbell protection
zener TVS uClamp3301D BAT54S BAV99 1N4148W
https://resources.altium.com/p/beginners-guide-esd-protection-circuit-design-pcbs
https://circuitcellar.com/resources/ee-tips/active-esd-protection-for-microcontrollers-ee-tip/
Active ESD Protection for Microcontrollers (EE Tip #129) - Circuit Cellar
https://uk.rs-online.com/web/content/discovery/ideas-and-advice/push-button-switches-guide
https://www.electroschematics.com/musical-doorbell/
Schematic of the musical doorbell circuit
button doorbell protection Input Protection Circuits diode Isolated
interference - Microcontroller with a long wire for digital input - Electrical Engineering Stack Exchange
https://electronics.stackexchange.com/questions/49824/microcontroller-with-a-long-wire-for-digital-input
protection Protecting MCU digital input with 300m wires - Electrical Engineering Stack Exchange https://electronics.stackexchange.com/questions/607286/protecting-mcu-digital-input-with-300m-wires
https://en.wikipedia.org/wiki/Voltage_spike
SPD Switch charge over switch EMC Filters Surge Protection spikes Electromagnetic pulses
Inductor kickback
Voltage spike ELECTRICAL switch
Resistor-capacitor snubber configuration.
Resistor-capacitor snubber
Resistor-Capacitor (RC) Snubber Design for Power Switches | DigiKey
https://www.digikey.tw/en/articles/resistor-capacitor-rc-snubber-design-for-power-switches
https://www.quora.com/How-does-an-RC-Snubber-circuit-work
https://eepower.com/technical-articles/snubber-network-choices-design-and-evaluation/
delphi iocp socket tcpip network
https://sourceforge.net/p/synalist/code/HEAD/tree/trunk/
http://www.ararat.cz/synapse/doku.php/download
Ararat Synapse Code SynaSer serial library Synapse TCP/IP and serial library Winsock
http://visualsynapse.sourceforge.net/
VisualSynapse TCP/IP Delphi components based on Synapse.
http://synapse.ararat.cz/files/contrib/
Contributed Download Area - various samples and others.
http://synapse.ararat.cz/files/crypt/
Crypting libraries for SSL/TLS/SSH in Synapse
http://synapse.ararat.cz/files/W95ws2setup.exe
Winsock2 support for Windows95
http://www.wireshark.org/
Wireshark excellent tool for analyse and debugging of network communication.
https://www.nsoftware.com
https://www.nsoftware.com/products/
Internet Communications and Security
voipobjects delphi-iocp-library voipobjects delphi-iocp-library http://voipobjects.com/
https://github.com/tondrej/iocp-delphi
Windows IO Completion Port wrapper class for Delphi and Free Pascal
compilers: Delphi 7 or higher, Free Pascal 3.0.4 or higher
targets: Windows XP/Windows Server 2003 or higher, both 32 and 64-bit
Fiber and IOCP API siqiyi/libfiber The high performance coroutine library
GitHub iqiyi libfiber OS platfroms including Linux, FreeBSD, MacOS, and Windows, which supports
select, poll, epoll, kqueue, iocp, and even Windows GUI messages
Using beamer overlays with forest generated trees
HPScktSrvr at http://www.torry.net/ with the code pages.php?id= and a number sequence of 220#939383
Indy, ICS, Synapse, and Clever InetSuite,
ICS - The Internet Component Suite
iocpengine iocpengine - I/O Completion Port Engine for Delphi
TISAPIThreadPool; TIstringHelper; TIWPaintHandler. TIWPaintHandlerDsn. TIWPaintHandlerButton; TIWPaintHandlerCheckBox; TIWPaintHandlerComboBox ...
HttpSys2WebServer from DWScript use an IOCP-based server.
https://torry.net/components/internet/sockets/#939383
https://habr.com/ru/articles/145140/
Windows Sockets, IOCP и Delphi
//////////////////////////////////////////////////////////////////////////////////////////////////////
Создание списков сокетов разных типов.
Инициализация подсистемы сокетов.
Создание очереди сообщений.
Создание пула для обработки очереди.
Создание событий для сокетов.
Создание потоков отслеживающих сокетные события( например подключение нового клиента)
procedure Init;
var
WSAData: TWsaData;
i: Integer;
begin
gClients := TProtoStore.Create;
gListeners := TProtoStore.Create;
gServerClients := TProtoStore.Create;
if WSAStartup(MAKEWORD(2, 2), WSAData) <> 0 then
raise IOCPClientException.Create(sErrorInit_WSAtartup);
gIOCP := CreateIoCompletionPort(INVALID_HANDLE_VALUE, 0, 0, CPUCount * 2);
if gIOCP = INVALID_HANDLE_VALUE then
raise IOCPClientException.Create(sErrorInit_CreateIoCompletionPort);
for i := 1 to CPUCount * 2 do
begin
SetLength(gWorkers, Length(gWorkers) + 1);
gWorkers[Length(gWorkers) - 1] := TWorkerThread.Create();
end;
gListenerAcceptEvent := WSACreateEvent;
if gListenerAcceptEvent = WSA_INVALID_EVENT then
raise IOCPClientException.Create(sErrorInit_WSACreateEvent);
gServerClientsCloseEvent := WSACreateEvent;
if gServerClientsCloseEvent = WSA_INVALID_EVENT then
raise IOCPClientException.Create(sErrorInit_WSACreateEvent);
gClisentsConnectAndCloseEvents := WSACreateEvent;
if gClisentsConnectAndCloseEvents = WSA_INVALID_EVENT then
raise IOCPClientException.Create(sErrorInit_WSACreateEvent);
gClientSocketEventThread := TSocketEventThread.Create
(gClisentsConnectAndCloseEvents, gClients, ET_EVENT_SIGNALED);
gClientSocketEventThread.Start;
gServerClientsSocketEventThread := TSocketEventThread.Create
(gServerClientsCloseEvent, gServerClients, ET_EVENT_SIGNALED);
gServerClientsSocketEventThread.Start;
gServerSocketEventThread := TSocketEventThread.Create(gListenerAcceptEvent,
gListeners, ET_EVENT_SIGNALED);
gServerSocketEventThread.Start;
end;
diocp DIOCP 无锁队列 ZeroMQ QWorkers uJobPusher RabbitMQ websocket network
https://www.opensourceagenda.com/projects/zserver4d
内置抗量子密码支持 https://en.wikipedia.org/wiki/SHA-3 支持了5大美国国家标准技术研究所(NIST)高级加密标准算法 rc6加密,通讯协议支持 https://en.wikipedia.org/wiki/RC6 Twofish加密,通讯协议支持 https://en.wikipedia.org/wiki/Twofish Serpent加密,通讯协议支持 https://en.wikipedia.org/wiki/Serpent_(cipher) Mars加密,通讯协议支持 https://en.wikipedia.org/wiki/MARS_(cipher) Rijndael加密,通讯协议支持 https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
https://www.nuget.org/packages/SimpleMsgPack
https://www.twblogs.net/a/5ef0629c33cbe858769e7fee
zmq_strerror - 台部落
https://www.oschina.net/project/widgets/_project_list?company=0&tag=12&lang=0&os=156&sort=favorite&recommend=false&cn=false&weekly=false&p=150&type=ajax
http://m.mamicode.com/info-detail-1515096.html
DIOCP之DEMO-登陆验证设计(二)-码迷移动版-m.mamicode.com
http://bbs.2ccc.com/topic.asp?topicid=460182
DIOCP开源项目-DIOCP3
http://www.cnblogs.com/DKSoft/p/3889125.html
目前diocp3的开源地址 https://github.com/ymofen/diocp3
https://code.google.com/archive/p/diocp/source/default/source?page=33
Google Code Archive - Long-term storage for Google Code Project Hosting.
https://www.cnblogs.com/hnxxcxg/category/1168706.html
DIOCP TDiocpCoderTcpServer异步任务投递队列TDiocpCoderTcpServer异步任务投递队列
delphi中间件 TDiocpCoderTcpServer数据序列和还原 TDiocpCoderTcpServer数据序列和还原
http://wedelphi.com/f/4/
DIOCP | WeDelphi Forum
https://gitee.com/ymofen/diocp-v5
diocp-v5: iocp, websocket, delphi,http
https://github.com/yangyxd/YxdIOCP
yangyxd/YxdIOCP: Delphi Windows IOCP 通讯模型封装,基于DIOCP。YxdIocp包含有支持大并发的TCP服务组件、HTTP服务组件、UDP服务组件、WebSocket服务组件,和TCP、UDP等基础客户端组件。
https://github.com/ymofen/diocp-v5
diocp DIOCP 无锁队列 ZeroMQ QWorkers
uJobPusher RabbitMQ websocket
diocp websocket DIOCP 开源地址 DIOCP-v5开源项目地址https://github.com ... WebSocket + Spring Security + SpringData-Jpa + MySql工程结构说明java .
webflux · GitHub Topics
flex开源项目地址 https://github.com/flex-users/flexlib
Awesome Delphi
Awesome Delphi
https://www.ancii.com/ayb3e4z7x/
Delphi编程技巧大全 http://www.delphitop.com/
Delphi盒子 www.2ccc.com
2Pascal-新时代的Pascal http://www.2pascal.com
WeDelphi http://www.WeDelphi.com
新大富翁论坛 http://www.dfwlt.com/forum.php
万一的博客:http://www.cnblogs.com/del/
原Delphi窖洞洞主博客:http://www.cnblogs.com/xalion
CnPack:http://www.cnpack.org/
https://github.com/cnpack/cnvcl
QDAC(QQ官方群 250530692):http://blog.qdac.cc/
OrangeUI-Delphi移动开发利器(OrangeUI技术支持QQ群:10900297)
RPMP-Restful Plugin Midware for Pascal(QQ 群: 289501953): https://github.com/ZYHPRO/RPMP
MyBean轻量级配置框架,插件交流群: 205486036: https://github.com/ymofen/delphi-framework-MyBean
ABFrameWork(Delphi 框架) QQ交流群: 307455944 (非开源)
开源网络库之Delphi Cross Socket,由WiNDDRiVER()开发的跨平台网络库,代码风格优美,注释详细,唯一不足的是Demo略少,在Github上开源:https://github.com/winddriver/Delphi-Cross-SocketQQ交流群:152678031
开源网络库之DIOCP,由天地弦(www.diocp.org)开发的网络并发框架,多线程管理库diocp,经过长时间的测试,运行极为稳定,在Github上开源:https://github.com/ymofen/diocp-v5QQ交流群:638127021
ZServer4D,细雨老仙从商业项目(游戏类)剥离而出的云服务器中间件,可以承载百万级在线的分布式长连接负载,在Github上开源:https://github.com/PassByYou888/ZServer4DQQ交流群:490269542
FMXUI 跨平台UI组件库 https://github.com/yangyxd/FMXUI
YxdJSON Delphi 高性能 JSON 库(支持RTTI和序列化操作)支持平台: Windows, Android, iOS, Mac OS https://github.com/yangyxd/YxdJson
YxdIocp Delphi 高性能 IOCP 通讯模型组件包 (包括TCP、UDP、HTTP、WebSocket等服务器组件和客户端组件)支持平台: Windows https://github.com/yangyxd/YxdIOCP
YxdWorker Delphi 多线程高并发作务引擎 支持平台: Windows, Android, iOS, Mac OS https://github.com/yangyxd/YxdWorker
YxdGameFrame Unity 轻量级游戏开发消息引擎框架 支持平台: Windows, Android, iOS, Mac OS 等 https://github.com/yangyxd/YxdGameFrame
Wke (miniblink) For Delphi 对Wke,miniblink的封装。实现支持html5 的 WebUI(相对于dcef来说,它只需要一个dll,更加轻量),也可以用来制作内嵌的小型浏览器。支持平台: Windows (WinXP 及以上)https://github.com/yangyxd/wke-for-delphi
mOrMot: https://github.com/synopse/mORMot
https://github.com/Fr0sT-Brutal/awesome-delphi
Delphi IDE Theme Editor(DITE)是一个工具,用于自定义像Delphi(RAD Studio)这样的几个Object Pascal IDE的IDE颜色突出显示。
https://github.com/RRUZ/delphi-ide-theme-editor
DMVCFramework(简称)是一个流行的,功能强大的Delphi网页解决方案框架
https://github.com/danieleteti/delphimvcframework
Delphi REST Client API
使用Delphi REST客户端API来使用以任何编程语言编写的REST服务。
https://github.com/fabriciocolombo/delphi-rest-client-api
Virtual-TreeView
虚拟树视图是从底层构建的Delphi树视图控件。多年的发展使其成为当今最灵活和先进的树形控制系统之一。虚拟树视图开始提出改进现有解决方案的许多方面,并引入了一些前所未有的新技术和原理。
https://github.com/Virtual-TreeView/Virtual-TreeView
Delphi-OpenCV是Delphi中OpenCV库头文件的翻译。
https://github.com/Laex/Delphi-OpenCV
DUnitX是一个新的测试框架,从DUnit,NUnit和其他测试框架中提出了一些想法。它被设计为与Delphi 2010或更高版本一起使用,它使用了旧版Delphi中没有的语言/ RTL功能。
https://github.com/VSoftTechnologies/DUnitX
Delphi IDE Colorizer(DIC)是一个插件,它可以使RAD Studio IDE的工作空间
https://github.com/RRUZ/Delphi-IDE-Colorizer
CEF4Delphi是由SalvadorDíazFau创建的一个开源项目,用于在基于Delphi的应用程序中嵌入基于Chromium的浏览器。
https://github.com/salvadordf/CEF4Delphi
OmniThreadLibrary是一个简单易用的Delphi线程库。OTL的主要“卖点”(除了价格之外)是力量,简单和开放。只需要几行代码,就可以设置多个线程,在它们之间发送消息,处理Windows消息等等。
https://github.com/gabr42/OmniThreadLibrary
Power Supply current consumption consumption Reducing Relay Power Consumption Circuit Diagram Power-Saving Relay Driver | Full Electronics Project with Source Code
Power Supply current consumption consumption
Reducing Relay Power Consumption Circuit Diagram
Power-Saving Relay Driver | Full Electronics Project with Source Code
logic threshold analogue switch MAX4624 reaches threshold
Reducing Relay Power Consumption Circuit Diagram
https://www.electroschematics.com/low-current-relay/
Power Supply current consumption consumption Reducing Relay Power Consumption Circuit Diagram
https://www.eeweb.com/reducing-relay-power-consumption/
https://www.eeweb.com/dual-relay-driver-board-circuit-schematic/
https://subscription.packtpub.com/book/iot-and-hardware/9781838982461/10/ch10lvl1sec14/exploring-a-relay-driver-circuit
Infrared Sensor Based Power Saver | Circuit Diagram Available
https://www.electronicsforu.com/electronics-projects/power-saving-relay-driver
https://www.homemade-circuits.com/how-to-make-relay-driver-stage-in/
Transistor Relay Driver Circuit with Formula and Calculations | Homemade Circuit Projects In this article we will comprehensively study a transistor relay driver circuit and learn how to design its configuration by calculating the parameters through formulas. Importance of Relay Relays are
2023年10月25日 星期三
delphi ping scanner исходник интернет icmp. dll delphi ping интернет icmp. dll Русское программирование на Delphi. network
https://delphisources.ru/forum/showthread.php?t=29617
http://www.delphimaster.ru/articles/icmp.html
https://www.thoughtco.com/implementing-ping-without-using-raw-sockets-4068869
http://www.codenet.ru/progr/delphi/stat/ping.php
http://forum.delphimaster.net/cgi-bin/forum.pl?id=1530002471&n=4&toprint=1
http://forum.delphimaster.net/cgi-bin/forum.pl?id=1530002471&n=4
https://kursovik.com/programming.html?lang=delphi
Вернуться Форум по Delphi программированию > Все о Delphi > Интернет и сети
Перезагрузить страницу Нужно сделать ping на Delphi
Всем доброго времени суток! Задача избитая, но полноценного решения не нашел. Нужно сделать ping на Delphi. Нашел вроде хороший пример http://www.delphimaster.ru/articles/icmp.html , но не хватает мозгов как сделать, что бы размер буффера можно бло указывать произвольно? Не хватает мозгов переделать на динамический массив буффера данных. Кроме того хотелось бы услышать мнение по правильности этого кода, есть мнение, что этот код может вызывать утечки памяти... И еще интересно - в Delphi XE случайно не сделали "обертку" под использование функций из ICMP.DLL?
unit PingUnits;
interface
function Ping(Address:RawByteString):Boolean;
implementation
uses
Windows, Winsock, SysUtils;
const
IP_STATUS_BASE=11000;
IP_SUCCESS=0;
IP_BUF_TOO_SMALL=11001;
IP_DEST_NET_UNREACHABLE=11002;
IP_DEST_HOST_UNREACHABLE=11003;
IP_DEST_PROT_UNREACHABLE=11004;
IP_DEST_PORT_UNREACHABLE=11005;
IP_NO_RESOURCES=11006;
IP_BAD_OPTION=11007;
IP_HW_ERROR=11008;
IP_PACKET_TOO_BIG=11009;
IP_REQ_TIMED_OUT=11010;
IP_BAD_REQ=11011;
IP_BAD_ROUTE=11012;
IP_TTL_EXPIRED_TRANSIT=11013;
IP_TTL_EXPIRED_REASSEM=11014;
IP_PARAM_PROBLEM=11015;
IP_SOURCE_QUENCH=11016;
IP_OPTION_TOO_BIG=11017;
IP_BAD_DESTINATION=11018;
IP_ADDR_DELETED=11019;
IP_SPEC_MTU_CHANGE=11020;
IP_MTU_CHANGE=11021;
IP_UNLOAD=11022;
IP_GENERAL_FAILURE=11050;
IP_PENDING=11255;
MAX_IP_STATUS=IP_GENERAL_FAILURE;
type
ip_option_information = packed record // Информация заголовка IP (Наполнение
// этой структуры и формат полей описан в RFC791.
Ttl : byte; // Время жизни (используется traceroute-ом)
Tos : byte; // Тип обслуживания, обычно 0
Flags : byte; // Флаги заголовка IP, обычно 0
OptionsSize : byte; // Размер данных в заголовке, обычно 0, максимум 40
OptionsData : Pointer; // Указатель на данные
end;
icmp_echo_reply = packed record
Address : u_long; // Адрес отвечающего
Status : u_long; // IP_STATUS (см. ниже)
RTTime : u_long; // Время между эхо-запросом и эхо-ответом
// в миллисекундах
DataSize : u_short; // Размер возвращенных данных
Reserved : u_short; // Зарезервировано
Data : Pointer; // Указатель на возвращенные данные
Options : ip_option_information; // Информация из заголовка IP
end;
PIPINFO = ^ip_option_information;
PVOID = Pointer;
function IcmpCreateFile() : THandle; stdcall; external 'ICMP.DLL' name 'IcmpCreateFile';
function IcmpCloseHandle(IcmpHandle : THandle) : BOOL; stdcall; external 'ICMP.DLL' name 'IcmpCloseHandle';
function IcmpSendEcho(
IcmpHandle : THandle; // handle, возвращенный IcmpCreateFile()
DestAddress : u_long; // Адрес получателя (в сетевом порядке)
RequestData : PVOID; // Указатель на посылаемые данные
RequestSize : Word; // Размер посылаемых данных
RequestOptns : PIPINFO; // Указатель на посылаемую структуру
// ip_option_information (может быть nil)
ReplyBuffer : PVOID; // Указатель на буфер, содержащий ответы.
ReplySize : DWORD; // Размер буфера ответов
Timeout : DWORD // Время ожидания ответа в миллисекундах
) : DWORD; stdcall; external 'ICMP.DLL' name 'IcmpSendEcho';
function PingIp(Address:RawByteString):Boolean;
var
hIP : THandle;
pingBuffer : array [0..31] of Char;
pIpe : ^icmp_echo_reply;
wVersionRequested : WORD;
lwsaData : WSAData;
error : DWORD;
destAddress : In_Addr;
begin
Result:=False;
hIP := IcmpCreateFile();
GetMem( pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer));
try
pIpe.Data := @pingBuffer;
pIpe.DataSize := sizeof(pingBuffer);
wVersionRequested := MakeWord(1,1);
error := WSAStartup(wVersionRequested,lwsaData);
if (error <> 0) then
begin
Exit;
end;
destAddress.S_addr:=inet_addr(PAnsiChar(Address));
IcmpSendEcho(hIP,
destAddress.S_addr,
@pingBuffer,
sizeof(pingBuffer),
Nil,
pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer),
5000);
error := GetLastError();
if (error <> 0) then
begin
Exit;
end;
Result:=pIpe.Status=IP_SUCCESS;
finally
IcmpCloseHandle(hIP);
WSACleanup();
FreeMem(pIpe);
end;
end;
function HostToIP(name: RawByteString; var Ip: RawByteString): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of ansichar;
hostEnt : PHostEnt;
addr : PAnsiChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (@hostName[0], sizeof (hostName));
StrPCopy(hostName, name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end
end;
function Ping(Address:RawByteString):Boolean;
var
s:RawByteString;
begin
Result:=HostToIP(Address,s);
if Result then
Result:=PingIp(s);
end;
end.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unit PingUnits;
interface
function Ping(Address:RawByteString):Boolean;
implementation
uses
Windows, Winsock, SysUtils;
const
IP_STATUS_BASE=11000;
IP_SUCCESS=0;
IP_BUF_TOO_SMALL=11001;
IP_DEST_NET_UNREACHABLE=11002;
IP_DEST_HOST_UNREACHABLE=11003;
IP_DEST_PROT_UNREACHABLE=11004;
IP_DEST_PORT_UNREACHABLE=11005;
IP_NO_RESOURCES=11006;
IP_BAD_OPTION=11007;
IP_HW_ERROR=11008;
IP_PACKET_TOO_BIG=11009;
IP_REQ_TIMED_OUT=11010;
IP_BAD_REQ=11011;
IP_BAD_ROUTE=11012;
IP_TTL_EXPIRED_TRANSIT=11013;
IP_TTL_EXPIRED_REASSEM=11014;
IP_PARAM_PROBLEM=11015;
IP_SOURCE_QUENCH=11016;
IP_OPTION_TOO_BIG=11017;
IP_BAD_DESTINATION=11018;
IP_ADDR_DELETED=11019;
IP_SPEC_MTU_CHANGE=11020;
IP_MTU_CHANGE=11021;
IP_UNLOAD=11022;
IP_GENERAL_FAILURE=11050;
IP_PENDING=11255;
MAX_IP_STATUS=IP_GENERAL_FAILURE;
type
ip_option_information = packed record // Информация заголовка IP (Наполнение
// этой структуры и формат полей описан в RFC791.
Ttl : byte; // Время жизни (используется traceroute-ом)
Tos : byte; // Тип обслуживания, обычно 0
Flags : byte; // Флаги заголовка IP, обычно 0
OptionsSize : byte; // Размер данных в заголовке, обычно 0, максимум 40
OptionsData : Pointer; // Указатель на данные
end;
icmp_echo_reply = packed record
Address : u_long; // Адрес отвечающего
Status : u_long; // IP_STATUS (см. ниже)
RTTime : u_long; // Время между эхо-запросом и эхо-ответом
// в миллисекундах
DataSize : u_short; // Размер возвращенных данных
Reserved : u_short; // Зарезервировано
Data : Pointer; // Указатель на возвращенные данные
Options : ip_option_information; // Информация из заголовка IP
end;
PIPINFO = ^ip_option_information;
PVOID = Pointer;
function IcmpCreateFile() : THandle; stdcall; external 'ICMP.DLL' name 'IcmpCreateFile';
function IcmpCloseHandle(IcmpHandle : THandle) : BOOL; stdcall; external 'ICMP.DLL' name 'IcmpCloseHandle';
function IcmpSendEcho(
IcmpHandle : THandle; // handle, возвращенный IcmpCreateFile()
DestAddress : u_long; // Адрес получателя (в сетевом порядке)
RequestData : PVOID; // Указатель на посылаемые данные
RequestSize : Word; // Размер посылаемых данных
RequestOptns : PIPINFO; // Указатель на посылаемую структуру
// ip_option_information (может быть nil)
ReplyBuffer : PVOID; // Указатель на буфер, содержащий ответы.
ReplySize : DWORD; // Размер буфера ответов
Timeout : DWORD // Время ожидания ответа в миллисекундах
) : DWORD; stdcall; external 'ICMP.DLL' name 'IcmpSendEcho';
function PingIp(Address:RawByteString):Boolean;
var
hIP : THandle;
pingBuffer : array [0..31] of Char;
pIpe : ^icmp_echo_reply;
wVersionRequested : WORD;
lwsaData : WSAData;
error : DWORD;
destAddress : In_Addr;
begin
Result:=False;
hIP := IcmpCreateFile();
GetMem( pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer));
try
pIpe.Data := @pingBuffer;
pIpe.DataSize := sizeof(pingBuffer);
wVersionRequested := MakeWord(1,1);
error := WSAStartup(wVersionRequested,lwsaData);
if (error <> 0) then
begin
Exit;
end;
destAddress.S_addr:=inet_addr(PAnsiChar(Address));
IcmpSendEcho(hIP,
destAddress.S_addr,
@pingBuffer,
sizeof(pingBuffer),
Nil,
pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer),
5000);
error := GetLastError();
if (error <> 0) then
begin
Exit;
end;
Result:=pIpe.Status=IP_SUCCESS;
finally
IcmpCloseHandle(hIP);
WSACleanup();
FreeMem(pIpe);
end;
end;
function HostToIP(name: RawByteString; var Ip: RawByteString): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of ansichar;
hostEnt : PHostEnt;
addr : PAnsiChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (@hostName[0], sizeof (hostName));
StrPCopy(hostName, name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end
end;
function Ping(Address:RawByteString):Boolean;
var
s:RawByteString;
begin
Result:=HostToIP(Address,s);
if Result then
Result:=PingIp(s);
end;
end.
В общем вместо
Код:
1
pingBuffer : array [0..31] of AnsiChar;
я написал
Код:
1
pingBuffer : array of AnsiChar;
Потом инициализирую переменную
Код:
1
SetLength(pingBuffer, 1452);
и заменил везде
Код:
1
sizeof(pingBuffer)
на
Код:
1
Length(pingBuffer)
Адрес массива передаю также:
Код:
1
pIpe.Data := @pingBuffer;
Вроде все работает, но вопрос - правильно ли я все сделал? Больше всего волнует вопрос: передача адреса на статический и динамический массив одинаково выполняется в Делфи? Я имею ввиду синтаксически...
Да, на счет 64 байт я тоже заметил, поэтому явно везде указал AnsiChar. А за @pingBuffer[0] спасибо, ошибок при работе не вызвало, остается только креститься и молиться, что бы работало
Note that the Winsock 1.1 WSAStartup function must be called prior to using the functions exposed by ICMP.DLL. If you do not do this, the first call to IcmpSendEcho will fail with error 10091 (WSASYSNOTREADY).
Below you can find the Ping unit's source code. Here are two examples of usage.
Example 1: Code Snippet
uses Ping;...
const ADP_IP = '208.185.127.40'; (* http://delphi.about.com *)
beginIf Ping.Ping(ADP_IP) then ShowMessage('About Delphi Programming reachable!');
end;
Example 2: Console Mode Delphi Program
Our next example is a console mode Delphi program that uses the Ping unit: . Here's the Ping unit's source:
unit Ping;
interfaceuses
Windows, SysUtils, Classes;
type
TSunB = packed record
s_b1, s_b2, s_b3, s_b4: byte;
end;
TSunW = packed record
s_w1, s_w2: word;
end;
PIPAddr = ^TIPAddr;
TIPAddr = record
case integer of
0: (S_un_b: TSunB);1: (S_un_w: TSunW);2: (S_addr: longword);
end;IPAddr = TIPAddr;
function IcmpCreateFile : THandle; stdcall; external 'icmp.dll';
function IcmpCloseHandle (icmpHandle : THandle) : boolean;
stdcall; external 'icmp.dll'
function IcmpSendEcho
(IcmpHandle : THandle; DestinationAddress : IPAddr;
RequestData : Pointer; RequestSize : Smallint;
RequestOptions : pointer;
ReplyBuffer : Pointer;
ReplySize : DWORD;
Timeout : DWORD) : DWORD; stdcall; external 'icmp.dll';
function Ping(InetAddress : string) : boolean;
implementationuses
WinSock;
function Fetch(var AInput: string;
const ADelim: string = ' ';
const ADelete: Boolean = true)
: string;
var
iPos: Integer;
begin
if ADelim = #0 then begin
// AnsiPos does not work with #0
iPos := Pos(ADelim, AInput);
end else begin
iPos := Pos(ADelim, AInput);
end;
if iPos = 0 then begin
Result := AInput;
if ADelete then begin
AInput := '';
end;
end else begin
result := Copy(AInput, 1, iPos - 1);
if ADelete then begin
Delete(AInput, 1, iPos + Length(ADelim) - 1);
end;
end;
end;
procedure TranslateStringToTInAddr(AIP: string; var AInAddr);
var
phe: PHostEnt;pac: PChar;GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
try
phe := GetHostByName(PChar(AIP));
if Assigned(phe) thenbegin
pac := phe^.h_addr_list^;
if Assigned(pac) then
begin
with TIPAddr(AInAddr).S_un_b do begin
s_b1 := Byte(pac[0]);s_b2 := Byte(pac[1]);s_b3 := Byte(pac[2]);s_b4 := Byte(pac[3]);
end;
end
else
begin
raise Exception.Create('Error getting IP from HostName');
end;
end
else
begin
raise Exception.Create('Error getting HostName');
end;
except
FillChar(AInAddr, SizeOf(AInAddr), #0);
end;WSACleanup;
end;
function Ping(InetAddress : string) : boolean;
var
Handle : THandle;
InAddr : IPAddr;
DW : DWORD;
rep : array[1..128] of byte;
begin
result := false;Handle := IcmpCreateFile;
if Handle = INVALID_HANDLE_VALUE then
Exit;
TranslateStringToTInAddr(InetAddress, InAddr);
DW := IcmpSendEcho(Handle, InAddr, nil, 0, nil, @rep, 128, 0);Result := (DW 0);IcmpCloseHandle(Handle);
end;
end.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Пингуем (Ping) под Delphi
1
Пингуем (Ping) под Delphi
Протокол Ping предназначен для тестирования компьютерных соединений в Интернете путём посылки через протокол Internet Protocol (IP) по обределённому адресу сообщения и ожидания от него ответа.
ICMP - Internet Control Message Protocol. ICMP служит для передачи сообщений об ошибках а так же управляющих сообщений . ICMP-тест может показать насколько быстро проходит информация между двумя узлами в Интернете.
Запускаем Delphi;
В Новом проекте добавляем в форму Tbutton, Tedit и Tmemo;
Вставляем “winsock”;
объявляем структурку для IP-заголовка:
type IPINFO = record
Ttl : char;
Tos : char;
IPFlags : char;
OptSize : char;
Options : ^char;
end;
5. объявляем структурку для хранения ICMP пакета:
type ICMPECHO = record
Source : longint;
Status : longint;
RTTime : longint;
DataSize : Shortint;
Reserved : Shortint;
pData : ^variant;
i_ipinfo : IPINFO;
end;
6. Объявляем функции и процедуры, которые мы будем вызывать из ICMP.DLL
TIcmpCreateFile =
function():integer;{$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpCloseHandle =
procedure(var handle:integer);{$IFDEF WIN32} stdcall;{$ENDIF}
TIcmpSendEcho =
function(var handle:integer; endereco:DWORD; buffer:variant;
tam:WORD; IP:IPINFO; ICMP:ICMPECHO; tamicmp:DWORD;
tempo:DWORD):DWORD;{$IFDEF WIN32} stdcall; {$ENDIF}
7. В Tbutton в событие Onclick вставляем следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
wsadt : wsadata;
icmp :icmpecho;
HNDicmp : integer;
hndFile :integer;
Host :PHostEnt;
Destino :in_addr;
Endereco :^DWORD;
IP : ipinfo;
Retorno :integer;
dwRetorno :DWORD;
x :integer;
IcmpCreateFile : TIcmpCreateFile;
IcmpCloseHandle : TIcmpCloseHandle;
IcmpSendEcho : TIcmpSendEcho;
begin
if (edit1.Text = '') then begin
Application.MessageBox('Enter a HostName ro a IP Adress',
'Error', MB_OK);
exit;
end;
HNDicmp := LoadLibrary('ICMP.DLL');
if (HNDicmp 0) then begin
@IcmpCreateFile := GetProcAddress(HNDicmp,'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(HNDicmp,'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(HNDicmp,'IcmpSendEcho');
if (@IcmpCreateFile=nil) or (@IcmpCloseHandle=nil) or
(@IcmpSendEcho=nil) then begin
Application.MessageBox('Error getting ICMP Adress','Error', MB_OK);
FreeLibrary(HNDicmp);
end;
end;
Retorno := WSAStartup($0101,wsadt);
if (Retorno 0) then begin
Application.MessageBox('Can?t Load WinSockets','WSAStartup', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
end;
Destino.S_addr := inet_addr(Pchar(Edit1.text));
if (Destino.S_addr = 0) then begin
Host := GetHostbyName(PChar(Edit1.text));
end
else begin
Host := GetHostbyAddr(@Destino,sizeof(in_addr), AF_INET);
end;
if (host = nil) then begin
Application.MessageBox('Host not found','Error', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
exit;
end;
memo1.Lines.Add('Pinging ' + Edit1.text);
Endereco := @Host.h_addr_list;
HNDFile := IcmpCreateFile();
for x:= 0 to 4 do begin
Ip.Ttl := char(255);
Ip.Tos := char(0);
Ip.IPFlags := char(0);
Ip.OptSize := char(0);
Ip.Options := nil;
dwRetorno := IcmpSendEcho(
HNDFile,
Endereco^,
null,
0,
Ip,
Icmp,
sizeof(Icmp),
DWORD(5000));
Destino.S_addr := icmp.source;
Memo1.Lines.Add('Ping ' + Edit1.text);
end;
IcmpCLoseHandle(HNDFile);
FreeLibrary(HNDicmp);
WSACleanup();
end;
У данного примера есть один недостаток - программа не воспримет доменное имя, только IP-адресс. Для пользователей NT не используйте функцию IcmpCloseHandle. Это всё.....
Ну и в конце полный исходный код примера:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
winsock, StdCtrls;
type
IPINFO = record
Ttl :char;
Tos :char;
IPFlags :char;
OptSize :char;
Options :^char;
end;
type
ICMPECHO = record
Source :longint;
Status :longint;
RTTime :longint;
DataSize:Shortint;
Reserved:Shortint;
pData :^variant;
i_ipinfo:IPINFO;
end;
TIcmpCreateFile =
function():integer; {$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpCloseHandle =
procedure(var handle:integer);{$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpSendEcho =
function(var handle:integer; endereco:DWORD; buffer:variant;
tam:WORD; IP:IPINFO; ICMP:ICMPECHO; tamicmp:DWORD;
tempo:DWORD):DWORD;{$IFDEF WIN32} stdcall; {$ENDIF}
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
wsadt : wsadata;
icmp :icmpecho;
HNDicmp : integer;
hndFile :integer;
Host :PHostEnt;
Destino :in_addr;
Endereco :^DWORD;
IP : ipinfo;
Retorno :integer;
dwRetorno :DWORD;
x :integer;
IcmpCreateFile : TIcmpCreateFile;
IcmpCloseHandle : TIcmpCloseHandle;
IcmpSendEcho : TIcmpSendEcho;
begin
if (edit1.Text = '') then begin
Application.MessageBox('Digite um HostName ou um End. IP',
'Error', MB_OK);
exit;
end;
HNDicmp := LoadLibrary('ICMP.DLL');
if (HNDicmp 0) then begin
@IcmpCreateFile := GetProcAddress(HNDicmp,'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(HNDicmp,'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(HNDicmp,'IcmpSendEcho');
if (@IcmpCreateFile=nil) or (@IcmpCloseHandle=nil) or
(@IcmpSendEcho=nil) then begin
Application.MessageBox('Erro pegando endereзos ICMP','Error', MB_OK);
FreeLibrary(HNDicmp);
end;
end;
Retorno := WSAStartup($0101,wsadt);
if (Retorno 0) then begin
Application.MessageBox('Nгo foi possнvel carregar WinSockets',
'WSAStartup',MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
end;
Destino.S_addr := inet_addr(Pchar(Edit1.text));
if (Destino.S_addr = 0) then begin
Host := GetHostbyName(PChar(Edit1.text));
end
else begin
Host := GetHostbyAddr(@Destino,sizeof(in_addr), AF_INET);
end;
if (host = nil) then begin
Application.MessageBox('Host nгo encontrado','Error', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
exit;
end;
memo1.Lines.Add('Pinging ' + Edit1.text);
Endereco := @Host.h_addr_list;
HNDFile := IcmpCreateFile();
for x:= 0 to 4 do begin
Ip.Ttl := char(255);
Ip.Tos := char(0);
Ip.IPFlags := char(0);
Ip.OptSize := char(0);
Ip.Options := nil;
dwRetorno := IcmpSendEcho(
HNDFile,
Endereco^,
null,
0,
Ip,
Icmp,
sizeof(Icmp),
DWORD(5000));
Destino.S_addr := icmp.source;
Memo1.Lines.Add('Pingou ' + Edit1.text);
end;
IcmpCLoseHandle(HNDFile);
FreeLibrary(HNDicmp);
WSACleanup();
end;
end.
home automation distribution Electrical Distribution Board Wiring Diagram Aruduno Based Industrial PLC
Electrical Distribution Board Wiring Diagram
https://www.unipi.technology/products/family-house-automation-system-166
Family house automation system | Unipi
UniPi Axon Raspberry PI Based PLC
Aruduno Based Industrial PLC
ESP32 Industrial Controller with WIFI Digital 24V from NORVI Controllers on Tindie
IEC 61131-3: IL, FBD, LD, SFC, ST, CFC, powerful library management
home automation HACKDAY IO
Nextech | PLC- programovanie riadiacej jednotky UniPi Neuron v grafickom prostredí Node
https://www.kincony.com/2021/07/12
07/12/2021 - Smart Home Automation | KinCony
https://www.kincony.com/product/power-distribution-box
KC868-A8S ESP32 Ethernet RS485 Relay 4G GSM Development Board Switch MQTT HTTP ESPhome Home Assistant Tasmota DIY
KC868-AIO ESP32 All In One Board 58CH DI 32CH DO 16CH AO 19CH AI For Home Assistant By ESPHome
Smart Home Automation Module Controller System Switch Remote Power Circuit Breaker Distribution Box Board phase Cabinet
https://www.kincony.com/smart-electrical-distribution-panel-tuya-home-assistant-8ch.html
Home Automation Kits Electricity meter Distribution board Electrical Wires & Cable, electronics, electrical Wires Cable png
DIY home automation system: main controller board. Autonomous controller and a bridge between my other DIY
home automation controller relay
https://store.ncd.io/product/industrial-relay-controller-16-channel-spdt-uxp-expansion-port/
Industrial Relay Controller 16-Channel SPDT + UXP Expansion Port
smartDEN IP 16 Relay Web enabled Module with DIN Rail BOX
relay PID PRO DIN Rail Mount Relay DIN Rail Mounted Slim Relay Module SPDT
industrial relay PID PRO DIN Rail Mount Relay Module SPDT
The Basics of Control Relays | Relay Control Systems | Textbook
high quality Single Pole Double Throw Relay(SPDT).
DPDT stands for double-pole double-throw relay
din rail mount
GEYA 4 Channel Relay Module 1 SPDT DIN Rail Mount 5V 12V 24V DC/AC
Interface Relay Module for PLC GEYA 4 Channel Relay Module 1 SPDT DIN
Rail Mount 12V 24V DC/AC Interface Relay Module
industrial relay controller din rail mount Industrial Controller surge protection
PHOENIX CONTACT TT-ST-M-EX(I)-24DC Surge Protector, Mains Surge Protector, 2 Pole, 10 kA, 30 VDC, DIN Rail
https://de.farnell.com/en-DE/phoenix-contact/tt-st-m-ex-i-24dc/surge-protect-10ka-30vdc-din-rail/dp/3285615
industrial vision systems framework Vision image processing software
https://www.opto-e.com/en/products/fabimage-lib-suite
https://www.adaptive-vision.com/en/software/library/
https://forums.ni.com/t5/Machine-Vision/IMAQ-imgPlotDC2/td-p/2142020
https://github.com/topics/machine-vision
https://www.svs-vistek.com/en/imaging-components/svs-machine-vision.php?t=software
https://www.advantech.com/en/products/intelligent-vision-camera-software/sub_video_acquisition_and_encoding
https://www.pepperl-fuchs.com/global/en/classid_1928.htm
Vision System | Industrial Vision Systems, Image Processing | See Overview
https://www.teledynedalsa.com/en/products/imaging/vision-software/
https://en.wikipedia.org/wiki/Industrial_process_imaging
https://www.vision-systems.com/
http://net.bangong.cn:8806/content/details67_628.html
https://www.mdpi.com/2076-3417/12/22/11565/html
Applied Sciences | Free Full-Text | A Machine Vision Development Framework for Product Appearance Quality Inspection
https://viso.ai/computer-vision/the-most-popular-computer-vision-tools/
2023年10月24日 星期二
blender3d geometrynodes b3d now animate logos images Reaction Diffusion with Simulation Nodes Reaction Diffusion Resources 3D models Materials Dev Tools Blender
https://blendermarket.com/products/ird-gn
Instant Reaction Diffusion - Geometry Nodes Procedural Organic patterns generator - Blender Market
blender3d geometrynodes b3d now animate logos images Reaction Diffusion with Simulation Nodes mesh with the Reaction diffusion generator in real-time! Control sim details keyframe everything easily. More demo scenes soon. Gumroad & Blendermarket will be updated tomorrow
Reaction Diffusion with Simulation Nodes - Blender 3.6
Reaction Diffusion with Simulation Nodes Blender 3.6+ Geometry Nodes Reaction Diffusion Solver
https://blender.stackexchange.com/questions/220498/how-to-generate-reaction-diffusion-animation
Seven Experiments in Procedural Animation
https://www.karlsims.com/seven.html
Experiments in Procedural Animation Seven Experiments in Procedural AnimationZephyr www.zephyr-soft.net Zephyr is a small real-time operating system RTOS
https://en.wikipedia.org/wiki/Zephyr_%28operating_system%29
https://github.com/d-mozulyov/Tiny.Library
https://se.ewi.tudelft.nl/desosa2019/chapters/zephyr/
https://slowbootkernelhacks.blogspot.com/2020/11/zephyr-rtos-project.html
Python 3: Script interpreter and packages
CMake/Ninja/Make: Build system
Device Tree Compiler: Compiles device tree hardware descriptions
Toolchain: gcc for Arm, RISC-V, x86, etc.
Debug/Flash Tools: J-Link, pyOCD, OpenOCD, etc.
West: Custom tool for repository management, build/flash/debug assistance, and image signing
Zephyr Git repositories: The source code!
github data structure and algorithm pascal generic algorithms and data structures for lazarus/free pascal
https://github.com/avk959/LGenerics
https://github.com/topics/multiset
https://github.com/topics/priority-queue?o=desc&s=updated&utf8=%E2%9C%93
https://github.com/topics/multimap?o=desc&s=forks
https://github.com/topics/pascal-library
https://github.com/Fr0sT-Brutal/awesome-pascal/blob/master/README.md
Collection of generic algorithms language:Pascal
https://github.com/search?q=delphi+algorithms++language%3AMarkdown&type=code&l=Markdown
Small-C is both a subset of the C programming language, suitable for resource-limited microcomputers and embedded systems, Cross Small-C implementation based microcomputers
https://en.wikipedia.org/wiki/Small-C
https://godbolt.org/
https://forum.community.tw/t/topic/65
https://www.renesas.com/us/en/software-tool/cc-compiler-package-superh-family#additional_details
"C/C++ Compiler Package for SuperH Family Software Component List (PDF | English, 日本語)".
https://dansanderson.com/mega65/
https://dansanderson.com/mega65/cross-development/
https://dansanderson.com/mega65/cross-development-2/
https://m65digest.substack.com/
https://m65digest.substack.com/p/cross-development-for-fun-and-profit https://files.mega65.org/html/main.php?id=4fc0ab25-e381-4a64-a43c-d1d338166a7c
https://files.mega65.org/html/main.php?id=8b189d0b-ea1e-45a7-a4de-87bcb0b11696
https://files.mega65.org/html/main.php?id=3ef45802-446a-4325-bcc2-b387f818b33c https://www.forth.com/forth/
https://github.com/ptorric/figforth
https://github.com/timmoorhouse/mega65-forth
https://github.com/timmoorhouse/mega65-forth/wiki/Getting-Started
Python: The Best Image Processing Libraries OpenCV. Source OpenCV Scikit-Image. Source: sci-kit image SciPy. Source Scipy Pillow/PIL. PIL (Python Imaging Library NumPy Mahotas SimpleITK Pgmagick
https://en.wikipedia.org/wiki/Digital_image_processing
OpenCV. Source OpenCV
Scikit-Image. Source: sci-kit image
SciPy. Source Scipy
Pillow/PIL. PIL (Python Imaging Library
NumPy Mahotas SimpleITK Pgmagick
10-best-image-processing-libraries-in-python
neural-enhance pillow Tech Vetting skill assessments in seconds! thumbor python-qrcode
scikit-image OpenCV MATLAB SciPy Cloudinary FFMPEG
https://python.libhunt.com/compare-thumbor-vs-neural-enhance
https://python.libhunt.com/neural-enhance-alternatives
https://github.com/alexjc/neural-enhance
neural-enhance pillow thumbor python-qrcode scikit-image OpenCV MATLAB SciPy Cloudinary FFMPEG
https://scikit-image.org/
https://sharky93.github.io/docs/gallery/auto_examples/plot_canny.html
https://en.wikipedia.org/wiki/Scikit-image
Image Processing Libraries scikit-image github awesome
https://github.com/vinta/awesome-python
https://github.com/krzjoa/awesome-python-data-science
https://github.com/vinta/awesome image processing
image measurement Bias Ratio opencv vision measurement Otsu GaussianBlur threshold matplotlib pyplot subplot imshow threshold Canny Edge Detection
image measurement Bias Ratio opencv vision measurement
Otsu GaussianBlur threshold matplotlib pyplot subplot imshow threshold
Canny Edge Detection
OpenCV Otsu’s Binarization thresholding bias evaluated carrying opencv Otsu’s binarization bimodal Thresholding algorithm Otsu’s binarization
https://stackoverflow.com/questions/68177046/opencv-threshold-otsu-with-threshold-binary-logic
https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html
https://stackoverflow.com/questions/36172913/opencv-depth-map-from-uncalibrated-stereo-system
http://aishelf.org/yolo-opencv/
YOLO Darknet OpenCV Non Maxima Suppression (NMS) Reduce detected classes
http://aishelf.org/yolo/
YOLO (Part 1) Introduction with Darknet
Object detection principle YOLO preparation
https://github.com/AlexeyAB/darknet
http://aishelf.org/tag/colaboratory/
https://pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv/
https://roboflow.com/?ref=pyimagesearch
https://universe.roboflow.com/pyimagesearch?ref=pyimagesearch
https://pyimagesearch.com/2016/03/21/ordering-coordinates-clockwise-with-python-and-opencv/
https://pyimagesearch.com/2015/05/04/target-acquired-finding-targets-in-drone-and-quadcopter-video-streams-using-python-and-opencv/
https://pyimagesearch.com/2021/05/12/opencv-edge-detection-cv2-canny/
https://pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv/
https://pysource.com/2021/05/28/measure-size-of-an-object-with-opencv-aruco-marker-and-python/
https://forum.opencv.org/t/getoptimalnewcameramatrix-aspect-ratio-distortion/10258
calibration binocular vision measurement OpenCV center Principal Point calibration matrix
https://stackoverflow.com/questions/65583554/python-opencv-calibratecamera-returning-camera-matrix-but-it-is-nonsensical
https://docs.opencv.org/3.4/d9/d0c/group__calib3d.html
https://www.edge-ai-vision.com/2012/08/building-machines-that-see-finding-edges-in-images/
https://docs.opencv.org/4.x/da/d5c/tutorial_canny_detector.html
https://www.semanticscholar.org/paper/A-stereo-vision-measurement-system-Based-on-OpenCV-Lu-Wang/a160652b7365e8b74735e98a9fef094f318f52fe
https://www.mdpi.com/2313-433X/4/6/74
J. Imaging | Free Full-Text | A Review of Supervised Edge Detection Evaluation Methods and an Objective Comparison of Filtering Gradient Computations Using Hysteresis Thresholds
https://www.researchgate.net/publication/339551773_A_Performance_Comparison_of_Edge_Detection_Techniques_for_Printed_and_Handwritten_Document_Images
https://www.mdpi.com/1424-8220/20/13/3649
Sensors | Free Full-Text | Design of an Edge-Detection CMOS Image Sensor with Built-in Mask Circuits
https://www.researchgate.net/figure/Figure-1-Canny-edge-detection-process_fig1_220753963
https://en.wikipedia.org/wiki/Edge_detection
[PDF] Lecture 5: Gradients and Edge Detection What Are Edges? Boundaries of objects Boundaries of Lighting Types of Edges (1D Profiles
Gradients and Edge Detection Boundaries of objects Boundaries
Transform Ridge detection
Hough transform
Hough transform Generalized Hough transform
Phase Stretch Transform (PST)
http://what-when-how.com/biomedical-image-analysis/detection-of-circles-and-ellipses-with-the-hough-transform-biomedical-image-analysis/
Line Detection with Hough Transform
Convolution § Applications
Edge-preserving filtering
Feature detection (computer vision) for other low-level feature detectors
Image derivative
Gabor filter
Image noise reduction
Kirsch operator for edge detection in the compass directions
Ridge detection for relations between edge detectors and ridge detectors
Log Gabor filter
Phase stretch transform
https://en.wikipedia.org/wiki/Category:Image_processing
https://en.wikipedia.org/wiki/Category:Edge_detection
https://en.wikipedia.org/wiki/Edge_detection
https://en.m.wikipedia.org/wiki/corner_detection
industrial Bias Ratio vision measurement Canny Edge Detection Edge-Detection Filters
industrial Ratio Canny Edge measurement
https://ietresearch.onlinelibrary.wiley.com/doi/full/10.1049/ipr2.12764
Geo‐information mapping improves Canny edge detection method - Lijun - 2023 - IET Image Processing - Wiley Online Library
https://link.springer.com/chapter/10.1007/978-3-031-23504-7_7
SATMeas - Object Detection and Measurement: Canny Edge Detection Algorithm | SpringerLink
https://consultglp.com/2019/10/19/what-is-bias-in-measurement/
bias evaluated carrying repeat analysis suitable containing amount analyte reference value calculated difference between average results reference value
https://towardsdatascience.com/overfitting-in-deep-learning-what-is-it-and-how-to-combat-it-9760d25ad05b
https://www.frontiersin.org/articles/10.3389/fnins.2021.676220/full
Frontiers | PupilEXT: Flexible Open-Source Platform for High-Resolution Pupillometry in Vision Research
https://www.meccanismocomplesso.org/en/opencv-python-the-otsus-binarization-for-thresholding/
OpenCV & Python – The Otsu’s Binarization for thresholding – Meccanismo Complesso
bias evaluated carrying opencv Otsu’s binarization bimodal Thresholding algorithm Otsu’s binarization
OpenCV 3 Image Thresholding and Segmentation
https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_Global_Thresholding_Adaptive_Thresholding_Otsus_Binarization_Segmentations.php
corner detection discrete cosine transform improved canny edge detection algorithm dct deutsche nationalbibliothek canny-edge detection algorithm
https://www.codeproject.com/Articles/93642/Canny-Edge-Detection-in-C
Canny Edge Detection in C# - CodeProject
https://www.mdpi.com/2073-8994/12/11/1749
Symmetry | Free Full-Text | Adaptive Image Edge Extraction Based on Discrete Algorithm and Classical Canny Operator
2023年10月23日 星期一
gutenberg 古騰堡計畫 「古騰堡計畫」利用文字轉語音技術發布5000本免費有聲讀物 Microsoft的AI為古騰堡計畫錄製 5,000 本有聲書!書籍是免費的,程式是開源的
https://gutenberg.org/
https://techcrunch.com/2023/09/19/project-gutenberg-puts-5000-audiobooks-online-for-free-using-synthetic-speech/
https://microsoft.github.io/SynapseML/docs/Explore%20Algorithms/AI%20Services/Quickstart%20-%20Create%20Audiobooks/
https://zh.wikipedia.org/wiki/%E5%8F%A4%E8%85%BE%E5%A0%A1%E8%AE%A1%E5%88%92
https://drs.ksml.edu.tw/digital.aspx?id=363
https://search.tphcc.gov.tw/ERS/db_details.cfm?OPTION=language&NLANGUAGEID=2&rscID=187
https://www.techbang.com/posts/110509-microsoft-ai-project-gutenberg
https://www.techbang.com/posts/109776-gutenberg-text-to-speech-audiobooks
This is a cross-reference of the ReactOS source code produced using the excellent Doxygen package. It is refreshed on a daily basis.
https://doxygen.reactos.org/index.html
https://github.com/exajobs/os-collection
handwriting writing blurry fuzzy jagged algorithm Polynomial Bezier fuzzy curve tracing Defuzzify offline handwriting signature
Off-line signature verification using elementary combinations of directional codes from boundary pixels
Off-line handwritten signature verification with inflections feature
Xiufen Ye, Weiping Hou, Weixing Feng
Published in IEEE International Conference… 29 July 2005
Computer Science IEEE International Conference Mechatronics and Automation, 2005
The training algorithm of the signature verification system and the verification method of the signatures are introduced and Experimental results verify the effectiveness of this method.
handwriting writing jagged algorithm Polynomial Bezier fuzzy cursive tracing transforms over
transforms
https://www.sciencedirect.com/science/article/abs/pii/S0031320311003943
Binary segmentation algorithm for English cursive handwriting recognition
Cursive Overlapped Character Segmentation: An Enhanced Approach
https://arxiv.org/ftp/arxiv/papers/1904/1904.00792.pdf
handwriting algorithm cursive tracing transforms Vector graphics path simplification algorithm
[PDF] Complex Handwriting Trajectory Recovery: Evaluation Metrics and Algorithm
Complex Handwriting Trajectory Recovery: Evaluation Metrics and Algorithm | SpringerLink
https://link.springer.com/chapter/10.1007/978-3-031-26284-5_4
handwriting-trajectory-recovery
https://github.com/skryzhanovskaya/pen_trace_reconstruction
Pen Trace Reconstruction with Skeleton Representation of a Handwritten Text Image?
A biologically inspired approach for recovering the trajectory of offline handwriting | SpringerLink
handwriting-trajectory-recovery simplify moving average A biologically inspired approach for recovering the trajectory of offline handwriting
(PDF) Stroke extraction and stroke sequence estimation for off-line signature verification
vector path simplify algorithm Paths transforms Average stroke algorithm
vector path simplify Optimize Simplify Path transforms algorithm
https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
Ramer–Douglas–Peucker algorithm - Wikipedia
[PDF] Handwriting Trajectory Recovery using End-to-End Deep Encoder-Decoder Network
handwriting trajectory Relative simplify moving Transform approach trajectory
https://wicg.github.io/handwriting-recognition/
Handwriting Trajectory
Handwriting Trajectory path algorithm Polynomial cursive transforms
Handwriting Trajectory path algorithm Polynomial cursive transforms stroke skeleton line.
Complex Handwriting Trajectory Recovery: Evaluation Metrics and Algorithm | SpringerLink
github Handwriting Trajectory path algorithm Polynomial cursive Stroke transforms stroke skeleton line.
http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Paths-LivePathEffects.html
Trajectory path skeleton line algorithm Polynomial
Stroke predigest transforms
https://github.com/LingDong-/skeleton-tracing
https://www.semanticscholar.org/paper/Transcription-Methods-for-Trajectory-Optimization%3A-Kelly/0e36e16a09ede112a99370e8d669eb066a631bdc
[PDF] Polar Stroking: New Theory and Methods for Stroking Paths
Ramer–Douglas–Peucker algorithm Bézier curve
https://www.codeproject.com/Articles/1711/A-C-implementation-of-Douglas-Peucker-Line-Approxi
https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
https://ilya.puchka.me/douglas-peucker-algorithm/
https://github.com/Ignotus-mago/DrawCurveByHand
Ramer-Douglas-Peucker and Reumann-Witkam line-simplification algorithms on C#
https://www.grasshopper3d.com/m/discussion?id=2985220%3ATopic%3A1454406
Ramer-Douglas-Peucker and Reumann-Witkam line-simplification algorithms on C# – Grasshopper
https://www.codeproject.com/Articles/114797/Polyline-Simplification
Table of Contents
Introduction
Similar Articles
Simplification algorithms
Nth Point
Radial distance
Perpendicular Distance
Reumann-Witkam
Opheim
Lang
Douglas-Peucker
Douglas-Peucker (Variant)
Error algorithms
Positional Errors
About the Code
About the Demo Application
Upcoming Versions
History
https://psimpl.sourceforge.net/douglas-peucker.html
The Douglas-Peucker Algorithm: Sufficiency Conditions for Non-Self-Intersections1
Polyline Variant of Douglas–Peucker Algorithm
https://github.com/AnnaMag/Line-simplification
https://www.codeproject.com/Articles/5306595/Smart-Decimation-Polyline-Simplification-and-Smoot
Douglas-Peucker algorithm
Visvalingam-Whyatt algorithm
Curvature-based simplification algorithm
Maximum Squared Distance algorithm
Reumann-Witkam algorithm
Opheim algorithm
Lang algorithm
Nth point
Distance between points
Perpendicular distance
https://algorithm-wiki.csail.mit.edu/wiki/Line_Simplification
https://algorithm-wiki.csail.mit.edu/wiki/Zhao-Saalfeld_(_Line_Simplification)
Ramer–Douglas–Peucker algorithm
Visvalingam–Whyatt
Reumann–Witkam
Opheim simplification
Lang simplification
Zhao-Saalfeld
Introduction - Projectbook General Graphical Apps
https://projectbook.code.brettchalupa.com/
Introduction - Projectbook
The Great Big List of Software Project Ideas
Projectbook is a collection of over 100 software project ideas for people looking to learn a given language or technology but short on inspiration for what to build. The projects vary in complexity and what they exercise. Find inspiration for your next project.
Dig In!
View the projects in the sidebar or browse through the sections below to find a project that catches your interest. Then hack away and make some cool things! Learn a lot. And share what you make.
CLIs
Libraries
Websites
Web Components
Web Apps
GUIs (platform agnostic, apps
https://m.prestwood.com/aspsuite/kb/crossref.asp?langid=2&tolangid=6&catid=&syntaxid=19
Code Blocks (Delphi and C# Cross Reference Guide)
objective reference guide libraries programming
https://dl.acm.org/doi/10.5555/2559601
Objective-C Programmer's Reference
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html
https://projectbook.code.brettchalupa.com/general-graphical-apps/_introduction.html#general-graphical-apps
General Graphical Apps
Swift UI — for building apps for Apple devices
gtk — cross-platform desktop app toolkit with support for many language bindings
gtk-rs — Rust library for building cross-platform desktop GUIs with GTK4
Vala — a newer language for building apps with GTK
Flutter — cross-platform app building library in Dart from Google
React Native — build mobile apps using React components
Ionic — a mobile SDK that uses web components
Electron — build desktop apps using web technologies
Xamarin — cross-platform apps built with .NET and C#
Kotlin — Android development
Qt — cross-platform app toolkit, seems a bit enterprise-y