Here is the code for the Zoom, Focus & Iris writen in Bascom Basic. As far as I know this will control all the Hitachi VK series "chassis" camera. It uses software serial communication. This program was written for use with the Atmega 8535 micro on the Futurlec board similar to the Arduino. On the Futurlec board the serial wire goes directly from the TX pin on the micro to the RX pin on the camera. You can download the control code from the Download page on nemocam.com. The Code is the same for all the cameras in respect to the same function. The Code for the VK-S914 is the easiest to understand. Hope this helps.
Regards,
Dennis
' ***********************************************************************************************
' * *
' * Title : VK-S274 & VK-S274R SERIES Hitachi Block Camera Controller *
' * Version : 1.1 Beta *
' * Last Updated : 02.12.2008 *
' * Target Device : ATMEGA8535 *
' * Author : Farmtech & Neptune769 *
' * Support : Try Skype Name : farmtech_dk or in MCS Bascom Forum *
' * Program code : BASCOM AVR *
' * Hardware req. : VK-S274 or VK-S274R SERIES Hitachi Block Camera *
' * Description : Control : Zoom - Focus & Iris Via Serialport on Camera *
' * Baud for camera : 4800.8.E.1 : Even Parity default for camera *
' * : 9600.8.N.1 but need setup in Camera (:WE05EF0) *
' * *
' * More Commands : See Datasheet lots of other stuff you can do. *
' * *
' * Datasheet : http://www.data-sheet.net/Vk-s454+ebook+pdf.html *
' * : http://ip.gliebetronics.com:800/hitachi/S274R_Comm_E11.pdf *
' * *
' * Copyright : None use it as you like *
' * *
' **************************************************************************************************
$regfile = "m8535.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 30
$framesize = 60
Open "comd.2:4800,8,e,1" For Output As #1 ' 4800 bps , even Parity ; default for camera
'Config Ports for the 6 buttons n PortC we use buttons to GND
Config Portc.0 = Input : Set Portc.0 'Zoom NEAR Button
Config Portc.1 = Input : Set Portc.1 'Zoom FAR Button
Config Portc.2 = Input : Set Portc.2 'Focus NEAR Button IN
Config Portc.3 = Input : Set Portc.3 'Focus FAR Button OUT
Config Portc.4 = Input : Set Portc.4 'Iris offset (average) + Button
Config Portc.5 = Input : Set Portc.5 'Iris offset (average) - Button
Config Portc.6 = Input : Set Portc.6 'Freeze ON / OFF Toggle Button
'Config Portc.7 = Input : Set Portc.7 'not used yet Button
Dim I As Byte , Irish As Byte , Irisl As Byte , Irisavg As Byte , Freezebit As Byte
'Print Version()
'setup Camera
Print #1 , ":WFCCB01" ' Switch the continuous digital zoom ON
Waitms 10
Print #1 , ":WFDFC10" ' Zoom speed normal
Waitms 10
Print #1 , ":WFCCB40" ' Switch the instant digital zoom ON
Waitms 10
Print #1 , ":WFCBBA8" ' Auto focus ON allways (not on manual Focus)
'setup Iris offset (average) level
Irisavg = &H40 ' Iris is normal hex 40 i hope
Irish = 0 ' Bit set for Iris to HIGH
Irisl = 0 ' Bit set for Iris to LOW
Freezebit = 0 ' togglebit for freez images
Wait 1
'The main program
Do
If Pinc.0 = 0 Then
Print #1 , ":WFCBB99" ' zoom near
Bitwait Pinc.0 , Set ' wait for button relace
Print #1 , ":WFCBBFE" ' stop
Print #1 , ":WFCBBA8" ' Auto focus on
Waitms 300 ' wait for auto zoom to get focus
End If
If Pinc.1 = 0 Then
Print #1 , ":WFCBB9B" ' zoom far
Bitwait Pinc.1 , Set ' wait for button relace
Print #1 , ":WFCBBFE" ' stop
Print #1 , ":WFCBBA8" ' Auto focus on
Waitms 300 ' wait for auto zoom to get focus
End If
If Pinc.2 = 0 Then
Print #1 , ":WFCBBFE" ' Auto focus off
Print #1 , ":WFCBBAA" ' focus near
Bitwait Pinc.2 , Set ' wait for button relace
Print #1 , ":WFCBBFE" ' stop
End If
If Pinc.3 = 0 Then
Print #1 , ":WFCBBFE" ' Auto focus off
Print #1 , ":WFCBBA9" ' focus far
Bitwait Pinc.3 , Set ' wait for button relace
Print #1 , ":WFCBBFE" ' stop
End If
'Iris offset (average) level + Open
If Pinc.4 = 0 And Irish = 0 Then ' if pinc.4 and irisbit high is 0 else skip
Irisl = 0 ' reset to low bit
I = Irisavg + 1 ' to start from known pos
For I = Irisavg To 255 ' Irisavg to High 00 - FF
Print #1 , ":WFD9E" ; Hex(i) ' Iris offset (average) send
Irisavg = I ' put I count into Irisavg
If I = 255 Then ' If MAX Iris then exit for
Irish = 1 ' Set Iris bit TO high so it dont do the OPEN until you have closed it a bit
Exit For
End If
If Pinc.4 = 1 Then Exit For ' check for button relace
Next ' next i
End If
'Iris offset (average) level - Close
If Pinc.5 = 0 And Irisl = 0 Then ' if pinc.5 and irisbit low is 0 else skip
Irish = 0 ' reset to high bit
I = Irisavg ' to start from known pos
For I = Irisavg To 0 Step -1 ' from Irisavg to MIN FF - 00
Print #1 , ":WFD9E" ; Hex(i) ' Iris offset (average) send
Irisavg = I ' put I count into Irisavg
If I = 0 Then ' If MIN Iris then exit for
Irisl = 1 ' Set Iris bit TO low so it dont do the CLOSE until you have open it a bit
Exit For
End If
If Pinc.5 = 1 Then Exit For ' check for button relace
Next ' next i
End If
If Pinc.6 = 0 And Freezebit = 0 Then
Print #1 , ":WFF3301" ' Freeze Field ON
Freezebit = 1 ' set freezebit to freeze OFF
Bitwait Pinc.6 , Set ' check for button relace
End If
If Pinc.6 = 0 And Freezebit = 1 Then
Print #1 , ":WFF3300" ' Freeze OFF
Freezebit = 0 ' set freezebit to freeze ON
Bitwait Pinc.6 , Set ' check for button relace
End If
'If Pinc.7 = 0 Then
' Print #1 , ":" ' not used yet
' Bitwait Pinc.7 , Set
'End If
Loop
Close #1
End