On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост N: 8117
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.06.25 18:29. Заголовок: (Free) Dynarithmic TWAIN Library


http://www.dynarithmic.com/details_dtwain.html
полный фарш , дока , примеры
чекнул , работает

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]


администратор




Пост N: 8118
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.06.25 12:40. Заголовок: Небольшой обзор. В п..


Небольшой обзор.
В поставке есть пример для Xbase.
Он спокойно собирается Harbour , подключить нужно
только HBXPP для функций DLLCALL ,DLLUnload ,DLLLoad
 
#include "Common.ch"
#include "dtwain32.ch"
#include "dll.ch"

PROCEDURE Main
LOCAL TwainSource, nDLLHandle, TwainOK, status, fileOption

fileOption := DTWAIN_USENATIVE + DTWAIN_USELONGNAME
status := 0

// Load the DTWAIN DLL
nDLLHandle := DLLLoad( "DTWAIN32.DLL" )

// Check if TWAIN is available
TwainOK := DLLCall( nDLLHandle, DLL_STDCALL, "DTWAIN_IsTwainAvailable" )

IF TwainOK == 1
// Initialize DTWAIN
DLLCall ( nDLLHandle, DLL_STDCALL, "DTWAIN_SysInitialize" )

// Select a TWAIN Source
TwainSource := DLLCall( nDLLHandle, DLL_STDCALL, "DTWAIN_SelectSource2", 0, ;
"Select Source", 0, 0, DTWAIN_DLG_CENTER_SCREEN )

IF TwainSource <> 0
// Acquire a file
DLLCall ( nDLLHandle, DLL_STDCALL, "DTWAIN_AcquireFile", TwainSource, ;
"Test.bmp", DTWAIN_BMP, fileOption, DTWAIN_PT_DEFAULT, 1, 1, 1, @status )
ENDIF

// Uninitialize DTWAIN
DLLCall( nDLLHandle, DLL_STDCALL, "DTWAIN_SysDestroy" )
ENDIF

// Unload the DLL
DLLUnload( nDLLHandle )
RETURN


Функция DTWAIN_AcquireFile может сразу писать в разных графических форматах.
Проверил выборочно на JPG и WEBP , работает.
Вот список:
Скрытый текст

Что бы пример запустился , в папке с программой должны жить файлы:
dtwain32.dll
twaininfo.txt
dtwain32.ini
Странное решение конечно насчет twaininfo.txt и dtwain32.ini , ну да ладно.
DLL может быть как 32 битная так и 64 битная , так же они могут быть ANSI
или UNICODE , все есть в поставке.
Функций в DLL порядка 390. Копать и копать :)

Копал в общем тему по функции DTWAIN_SelectSource2 или DTWAIN_SelectSource ,
вернет она если был выбор TwainSource (Handle).
Как понять это камера или это сканер ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8119
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.06.25 17:56. Заголовок: Dima пишет: Как пон..


Dima пишет:

 цитата:
Как понять это камера или это сканер ?


Решил иначе
Опрашиваем устройства через DTWAIN_EnumSources
Передав ему созданный массив полученный из DTWAIN_ArrayCreate с
типом массива DTWAIN_ARRAYSOURCE
После в цикле можно вытащить в том числе
DTWAIN_GetSourceProductName
DTWAIN_GetSourceProductFamily
DTWAIN_GetSourceManufacturer
DTWAIN_GetSourceVersionInfo
У меня так получилось
 

CanoScan LiDE 300 | TWAIN Scanners | Canon Inc. | 20.0.40.9 - 08 2017
WIA-MI MAX 3 | Twain Data Source On WIA | Xiaomi | 26 June 2000

В DTWAIN_GetSourceProductFamily есть слово Scanners , поэтому можно отличить это сканер или
камера телефона или Web камера. Конечно надо еще и на других машинках проверить.
В общем если сканер найден то сразу его подключаем через DTWAIN_SelectSourceByName и сразу делаем скан ,
минуя процедуру выбора устройства в DTWAIN_SelectSource2

Спасибо: 1 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 207
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет