Hi, I would like to know how to correctly set the BarcodeType at program runtime on mobile device.
If I set at design time, in Object Inspector, BarcodeType to bdtEAN, I can scan barcodes of store products that are 13-digits.
If I need to change it at run time to something else and continue scanning the new barcode, take a 8-digit code on products like the small size "M&M Peanuts" pk's, the barcode does not get scanned.
Code I use is this one that I came up with, but it may be wrong. It's tstrings is filled with the bdtNNN values in a tcombobox, and when I select a value, its suppose to change barcodetype to it, but maybe the code is incorrect. Below, I tried two versions of the code but they are not working. I am doing something wrong.
Please advise on how to build that part, thank you much!
procedure TForm1.cbBarcodeListChange(Sender: TObject);
//var s,ss:string; i:integer;
begin
// set to new BarcodeType;
// memo1.Lines.Add(cb1.Selected.Text); //testing for values
// memo1.Lines.Add(inttostr(cb1.ItemIndex)); // testing for values
bcode.BarcodeType := TTMSFNCWXBarcodeDecoderType(cbBarcodeList.ItemIndex);
// s:=cbBarcodeList.Selected.Text;
// bcode.BarcodeType := TTMSFNCWXBarcodeDecoderType(integer(s));
//// ss := string(bcode.BarcodeType);
end;
okay, I think I found out why the routine above does not work. The list is ordered differently in the type section versus what is listed in the Object Inspector's because I created the list in the order I saw in the Object Inspector. I just need to change it in the order to the one listed below:
update.. (it works for Android, but not for Windows)
The scanning works without issues when on mobile devices. I don't have to turn on/off the camera.
However, when compiling for Windows, then it doesn't work unless I turn the camera off and on.
This is the current code I am using to select different BarcodeTypes:
procedure TForm1.cbBarcodeListChange(Sender: TObject);
type bt= TTMSFNCWXBarcodeDecoderType;
begin
// set to new BarcodeType;
bcode.BarcodeType := bt(cbBarcodeList.ItemIndex);
end;
I don't know why this happens, but I would consider this a bug for Windows.
There is no special settings for Windows, the decoding happens based on camera snapshots. After the camera snapshot is taken it is sent to the decoder library along with the current barcode type setting.
Are you using a TTMSFNCWXCamera for the camera? It could be that the library is having issues properly reading the image taken from the camera because it's low quality. Can you try to increase TTMSFNCWXCamera.Resolution.IdealHeight and IdealWidth, see if t hat improves the reading speed/success?
I forgot to mention that I am using v1.5.2.0 of FNC WX.
I am using the Logitech HD Pro Webcam C290 camera. The last of the true version before they strarted making the cheaper $20 versions out there. It has good quality picture, and is 1920x1080 resolution max. But I've been scanning at the 480x640 resolution.
I am using the standard resolution that is baked in v1.5.2.0, 480x640. As you recall, it does not change the resolution in this version. Maybe that was fixed in v1.5.3.0, which I downloaded today, but have not installed it yet because I am working out other issues in this project and don't want to confuse or introduce potential new issues. I want to wait until I have the database part working in this project before I beging installing v1.5.3.0.
Indeed the resolution issue was fixed in v1.5.3.0. Can you please test this again after updating to v1.5.3.0? If it still does not work properly then, we can investigate further.
I'm having another issue that bothers me in v1.5.2.0, where the app won't work in windows unless my wifi is turned on. Either the app freezes or takes a long time to start up and then the camera sometimes shows a message 'not connected' or something like that. But the camera won't turn on unless I turn on wifi. Strange behaviour!! I need to shut my wifi off at times because it slows down my laptop sometimes. Also, i just shut it down if i'm not using it.
I found LibraryLocation: online and offline. I've tried setting it to both but camera won't work unless i turn on wifi under Windows.
Are you requesting the available camera devices somewhere? If that is the case, that feature unfortunately only works in online mode due to browser limitations.
That's not easy to tell without context. What did you modify exactly in your project when it stopped working?
I don't like wifi on all the time. Only when I am websurfing or watching a youtube video etc.
But I mainly turn it off because my laptop has unusual and suspicious activity with updates and other such tasks running every 5 or 10 minutes, or at random times.
"SoftwareUpdate.exe" is a big no-no to have running, it slows down my system and takes hours to finish. That is a Google product cataloging all my files. Its evil. Every time I remove it, it magically comes back. And there are other suspicious updater scanning type apps that I turn off and they too magically comes back to life. They are unecessary to be running every few hours, let along every day. So I turn off wifi.
This is the section of code causing that issue when I turn off wifi while still developing with the component. I just had to put an Exit; before the code and all is well again while compiling for Windows.
procedure TForm1.camCameraDevicesInitialized(Sender: TObject);
begin
EXIT;
if cam.Devices.Count > 0 then
begin
cam.SelectDevice(cam.Devices.Items[3]);
cam.Start;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
EXIT;
cam.CameraType := wctSelected;
cam.RequestDevices;
end;
I installed v1.5.3.0. Both install setup.exe's did uninstall the core and the fnc wx pack each.
But unfortunately, I am getting black screen again.
Then, I removed both the two Library files, and added them back (the Java and Web Client files) and recompiled, but I am still getting the same black screen. It is no longer working.
Also, during the install of v1.5.3.0, during the auto-detection of XE7 and D11.2, it appeared to install for XE7 and as well as D11.
But when I load up XE7, during the load up screen it still says v1.5.1.1 Trial and no Registered version. Note, it was doing it for v1.5.2.0 as well (saying v1.5.1.1 Trial), I just didn't realize its importance and forgot to mention it for that version.
But when I load up D11.2, the load up does say: (core 2.9.0.1) (fnc wx 1.5.3.0).
Note, in this installation, there were checkboxes that were auto-check for:
[x] Delphi XE7, [x] c++
[x] Delphi 11 Alexandria [ ] manual
I installed with those setting, even though I do not have the c++ edition. I did the same for v1.5.2.0 though that was successful.
I will try reinstalling it again and see what happens.