Contents Transfer Not Available Now, Sony A6000 - c#

I've got Sony A6000 camera with the latest firmware(3.20) and latest Smart Remote Control application (4.30). I've been trying to write application for transferring images, but faced with issues.
I can't switch camera function to Contents Transfer mode.
Repro steps:
Run Smart Remote Control app on my camera;
Sucesfully connect device to camera via WI-FI;
Discover the camera with parameter ST=urn:schemas-sony-com:service:ScalarWebAPI:1;
Receive response Location http://ip:port/scalarwebapi_dd.xml (instead mentioned in doc http://ip:port/dd.xml);
Parsed scalarwebapi_dd.xml contains guide, accessControl and camera services (instead mentioned in doc camera, system and avContent);
Request with getAvailableApiList method return the following:
getVersions, getMethodTypes, getApplicationInfo, getAvailableApiList, getEvent, startRecMode, stopRecMode.
Successfully run request with "startRecMode" method;
"getAvailableApiList" result doesn't contain "getCameraFunction" and
"setCameraFunction"
"getCameraFunction" return the following result:
{"id":1,"error":[1,"Not Available Now"]}
What I'm doing wrong?

Smart Remote 4.30 should give you the avContent services. I had an older version that had the same guide, accessControl, camera but after I updated it had the avContent service.
You can also try using getEvent to troubleshoot the camera status. This could shed some light into why the services aren't available.

Related

I can't upload user face template in device (SpeedFace-V4L)

I am using the ZKteco device (speedFace-V4L) with the ZKFace VX5.8 facial algo.
I want to download and upload the users faces templates, but I can't do it.
If I try to download the face template (from device to software) it works, but the opposite does not work, it downloads all other information without a face template.
I debugged this and found the error code is -103, according to the documentation which means device send back error of face version error
I tested the official demo with this device, and it still doesn't work!
I'm using GetUserFaceStr(int dwMachineNumber, string dwEnrollNumber, int dwFaceIndex, ref string TmpData, ref int TmpLength); function to get user informations and SetUserFaceStr(int dwMachineNumber, string dwEnrollNumber, int dwFaceIndex, string TmpData, int TmpLength) to set it
I forgot to say that the functions are working fine with the MB2000 device.
How can i solve this please.
Device: SpeedFace V4L
Face algo: ZKFace VX5.8
SDK: Standalone SDK-6.3.1.43
Language: C#, WPF
I had the same problem just a few days. We contacted ZKteco support and this the solution:
The Standalone SDK is not fully compatible with ZkTeco Visible Light Series devices and you have to contact ZKteco Sales to request the Push SDK which is in deed a communication protocol Http based so they will give access to the Api.
The ZkTeco new devices have http server like embeded. Also you have to pay for that Push SDK.
But with it you will be able to download user faces and upload user faces to SpeedFace v4L devices via TCP IP.

How to set auxiliary command on ONVIF protocol?

I have a trouble with ONVIF protocol.
I am making the camera controller on the ONVIF protocol using the C#. and I can find some ONVIF protocol doc. but that doc has no how to configure auxiliary command.
The one of the doc is https://www.onvif.org/wp-content/uploads/2017/07/ONVIF_PTZ_Client_Test_Specification_v1706.pdf.
The next one of the doc is https://www.onvif.org/specs/srv/ptz/ONVIF-PTZ-Service-Spec-v260.pdf.
And I have a sad article has a comment that "As result, from the VMS' GUI it is not possible to activate the Wiper, to run the Washing procedure, or to switch the camera to Night Mode.". https://support.videotec.com/hc/en-gb/articles/204773035-How-to-manage-Special-Functions-using-ONVIF
So, Really can not External program set the auxiliary command???
I'm not sure if this will help, but here's a piece of code using the ptz module of the ONVIF protocol...
https://www.codeproject.com/Tips/1192709/ONVIF-PTZ-Control-in-Csharp
You're supposed to be able to get a list of possible AUX command throught the GetNode function of the ptz ver20 .wsdl
https://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl
You should then be able to use the SendAuxiliaryCommand form the same .wsdl
I hope this helps!

How to find the status of an Azure v2 VM via rest / powershell ARM

I have just converted some existing VMs to v2 (Resource Manager) VMs, and subsequently updating scripts etc.
I have this line to find out the status (stopped / running / starting) of machines.
string URL = string.Format("https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Compute/virtualmachines/{2}?api-version=2015-05-01-preview",
SubscriptionID,
ResourceGroup,
ComputerName
);
In the classiccompute model I would get some json that I could parse to find status. Now however all I get is json object describing my machine. (size, attached disks etc)
No problem I thought! there's going to be an earlier version of the API that gives what I'm looking for I found a versioning document that talks about the service management versions but I can't find anything about the ARM versioning.
No problem I thought, I'll see what Powershell does. Alas it seems to read the same API, and give the same information. (and obviously service management mode no longer sees my VM)
From what I've seen in the last hour of poking around this, there's no way of checking the status of a v2 VM. I imagine I'm missing something that is getting lost in the sea of V1 google results.
How do I find out if my v2 VM is running? (bonus points for a document that covers the ARM api versions!)
After some further digging around! it appears the answer is to append /instanceview to the URI which will give the state of all of the attached resources.
For powershell there is the -status parameter for Get-AzureVM which will give the same json resource.

Show IP camera using c# windows forms

i'm developing software to display ip camera "Acti", i tried to use axnvUnifiedControl but i cannot find any information about it.
my goal is to connect to the camera using IP, username, and password and display the camera image in windows form.
i'm using c# .net 4.0
This can be done using the following code snippet:
First you should reference the OCX in your toolbox, and drag it to your form. but i tried to use it in design mode, but the VS is hang and force close.
camMedia.MediaSource = CameraIP;
camMedia.MediaUsername = UserName;
camMedia.MediaPassword = Password;
camMedia.HttpPort = HttpPort;//80
camMedia.RegisterPort = RegisterPort;//6000
camMedia.ControlPort = ControlPort;//6001
camMedia.StreamingPort = StreamingPort;//6002
camMedia.Connect(0);
where the camMedia is the OCX object name.
ACTi has quite a wide range of cameras, and they do not share uniform API. You have to look for documentation for your model of interest and check the vendor's sample code and SDKs. The cameras also have some support for well known protocols, such as RTSP and M-JPEG over HTTP so you can leverage certain libraries to visualize the feed, but again you will need documentation, specification and SDKs to find out the essential information.

Getting the current device time

I'm using WIA (Windows Image Acquisition) to grab photos from a camera. Using WIA 2.0, .net 4 C#, my test device is a Nikon D90 (yup, I have it actually plugged in). So the scenario is:
User has camera plugged into PC
User takes a photo from the camera itself
My application downloads the image via WIA
All of the above is working.
The problem I'm having is getting the current time from the device itself. The first time I get the time from the device I get the correct time, all good. If I run my application again, WIA seems to cache the time I got earlier and returns that, which is useless.
// use the WIA.DeviceManager to get the deviceInfo (not shown)
var device = deviceInfo.Connect();
var prop = device.Properties["Device Time"];
Vector deviceTimeVector = (Vector)prop.get_Value();
var deviceTime = deviceTimeVector.Date;
Does anyone who's done some work with WIA know how to reliably get the current time from a device? I've tried a synchronise but this doesn't seem to have any effect.
_device.ExecuteCommand(WIA.CommandID.wiaCommandSynchronize);
Open to suggestions too. I was thinking my only other way would be to "calibrate" the device by taking a test shot, checking what the time taken of that picture was but there's problems with this too.
Please let me know if you need any information.

Categories

Resources