Everything else that doesn't fall into one of the other PB categories.
chris319
Enthusiast
Posts: 782 Joined: Mon Oct 24, 2005 1:05 pm
Post
by chris319 » Wed Mar 02, 2016 11:29 am
Here is a simple webcam program which works with the existing escapi.pbi and the escapi3 dll.
Code: Select all
;webcam_simple.pb
;UPDATED 3/2/2016
DisableDebugger
IncludeFile "escapi.pbi"
WIDTH = 1279/1 ;640
HEIGHT = 719/1 ;360
WIDTHM1 = WIDTH - 1
HEIGHTM1 = HEIGHT - 1
#DEVICE = 0
If setupESCAPI() = 0
MessageRequester("Error", "Unable to initialize ESCAPI.")
End
EndIf
name$ = Space(255)
getCaptureDeviceName(#DEVICE, @name$, 255)
bufSize = WIDTH * HEIGHT * 4
scp.SimpleCapParams
scp\mWidth = WIDTH
scp\mHeight = HEIGHT
scp\mTargetBuf = AllocateMemory(bufSize)
*buf = scp\mTargetBuf
If initCapture(#DEVICE, @scp)
image = CreateImage(1, WIDTH, HEIGHT, 24)
OpenWindow(0, 0, 0, WIDTH, HEIGHT, name$, #PB_Window_SystemMenu)
ImageGadget(0, 0, 0, WIDTH, HEIGHT, ImageID(1))
offset = 0
Quit = #False
offset = 0
StartDrawing(ImageOutput(1))
*writeBuffer = DrawingBuffer()
pitch = DrawingBufferPitch()
StopDrawing()
Repeat
;If WaitWindowEvent(1) = #PB_Event_CloseWindow
If WindowEvent() = #PB_Event_CloseWindow
Quit = #True
Break
EndIf
doCapture(#DEVICE)
;Repeat: Until isCaptureDone(#DEVICE) <> #False
;NEEDS PIXEL-BY-PIXEL READING AND WRITING -- CANNOT USE CATCHIMAGE
hm1 = *writebuffer + (HEIGHTM1 * pitch)
*bufoff = *buf
For y = 0 To HEIGHTM1
For x = 0 To WIDTHM1
PokeL(hm1 + x*3, PeekL(*bufoff))
*bufoff + 4
Next
hm1 - pitch
Next
Repeat: Until isCaptureDone(#DEVICE) <> #False
SetGadgetState(0, ImageID(1))
Until Quit = #True
deinitCapture(#DEVICE)
FreeImage(1)
FreeMemory(scp\mTargetBuf)
CloseWindow(0)
Else
MessageRequester("ERROR", "Init capture failed.")
End
EndIf
End
r7mk4
User
Posts: 13 Joined: Tue Aug 02, 2005 2:23 pm
Post
by r7mk4 » Wed Nov 10, 2021 10:56 pm
I get strange characters for
getCaptureDeviceName(#DEVICE, @name$, 255)
单⁂楖敤敄楶散
any idea how change that?
Cheers
idle
Always Here
Posts: 5049 Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand
Post
by idle » Wed Nov 10, 2021 11:29 pm
r7mk4 wrote: ↑ Wed Nov 10, 2021 10:56 pm
I get strange characters for
getCaptureDeviceName(#DEVICE, @name$, 255)
单⁂楖敤敄楶散
any idea how change that?
Cheers
the name will be an ascii or utf8 string, so like this
Code: Select all
*name= AllocateMemory(255)
getCaptureDeviceName(#DEVICE,*name, 255)
Debug PeekS(*name,-1,#PB_Ascii)
r7mk4
User
Posts: 13 Joined: Tue Aug 02, 2005 2:23 pm
Post
by r7mk4 » Thu Nov 11, 2021 8:34 am
idle wrote: ↑ Wed Nov 10, 2021 11:29 pm
r7mk4 wrote: ↑ Wed Nov 10, 2021 10:56 pm
I get strange characters for
getCaptureDeviceName(#DEVICE, @name$, 255)
单⁂楖敤敄楶散
any idea how change that?
Cheers
the name will be an ascii or utf8 string, so like this
Code: Select all
*name= AllocateMemory(255)
getCaptureDeviceName(#DEVICE,*name, 255)
Debug PeekS(*name,-1,#PB_Ascii)
Wow!
Quite easy
Thank's a lot!
matalog
Enthusiast
Posts: 165 Joined: Tue Sep 05, 2017 10:07 am
Post
by matalog » Sun Dec 03, 2023 10:21 pm
EDIT, Nevermind - it requires the 32 Bit Version of PB.
I am trying to get ESCAPI working, or any of the webcam demos that I have found on the various posts in the forum here, and on every one I have tried, I get some result the equivalent of "Unable to initialize ESCAPI", INIT=0 etc. The last one I tried was the top post in page 2 of this post.
Is there something I have overlooked that is required to initalise ESCAPI?
I have a webcam plugged in, and copied the code from escapi.pbi, which is the same as escapi.pb in my folder. The folder also contains escapi.dll and the saved programs that I have tried.