Our Blog   Our Claris FileMaker Blog   Our Xojo Blog   Archive     Follow us on Mastodon, Twitter, Xing, LinkedIn or Facebook.

MBS Plugin Advent calendar: 10 - Phidgets

Door 10 - Phidgets

Fact of the day
Did you know that Phidgets are used in schools to get students interested in computer science?

Do you already know the small input/output devices from Phidgets Inc. Phidgets are small additional devices that you can connect to your computer and with which you can then input or output data. For example you can connect a small motor, a temperature sensor, a humidity sensor, a gyroscope or a small LED display and exchange data with these devices.

In this example, I would like to introduce you to three different Phidgets and how we can read data from these Phidgets in FileMaker. Our three phidgets are a light sensor, a temperature sensor and a slider. In our example, the phidgets are all connected together to a hub. This hub has various outputs to which the individual Phidgets can be connected. This hub is then connected to the computer with a USB cable. All Phidgets also draw their power via this USB cable. It is also possible to purchase a wireless HUB. In this case, a separate power supply is required.

I would now like to show you how to retrieve the Phidget data via FileMaker. First of all, we need to load the Phidget libary. To be able to load the libary, we first have to download it. You can find the appropriate download here.


MBS @ FMTraining.TV - FileMaker Monkeybread Plug-in Q&A

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.

We looked on a few new things in development for the next version. In the Q&A session we got interesting questions:


Xojo Meeting in Austin

I am coming to Austin in early February and I may organize a casual get-together with Xojo developers.

Something like a meet-up for dinner in a restaurant to talk about Xojo in North Austin.

I made a survey with doodle to find a date: Survey to find a date

We previously had meetings as well as a Xojo conference in previous years. See also forum post.

MBS Plugin Advent calendar: 9 - IBAN

Door 9 - IBAN

Fact of the day
Saint Lucia has the longest IBAN with 32 characters. This country is not a member of the SEPA area. Within the SEPA area, Malta has the longest IBAN with 31 characters.

Today I would like to introduce you to a component that currently only contains 7 functions, but can be very useful to you if required. We are talking about the IBAN component. The IBAN number is an international number that can be clearly assigned to a specific account. It is intended to contribute to the standardization of global payment transactions. Mainly the EU countries have already implemented this standard, but countries outside of Europe are also adopting this standard.


MBS Plugin Advent calendar: 8 - Determine your own position

Door 8 - Determine your own position (for Mac users)

Fact of the day
A man from Munich parked his car in a parking lot in 2015 and was unable to find it again. The car was reported stolen in the meantime. After around 6 months, he was informed by the parking garage company that his car was still in the parking lot. This man should have remembered his location ;-)

Today I would like to show you how you can determine your own position as a Mac or iOS SDK user. The CoreLocation component is available for this purpose.

If you want to use this option in your apps, we need authorization. We can request various authorizations. The Always authorization requests permission to use location services whenever the app is running. The next weaker authorization is the when in use authorization. It Requests permission to use location services while the app is in the foreground. There is also the temporary full accuracy authorization. This access will expire automatically, but it won't expire while the user is still engaged with your app. In our example, we use the Always authorization. If the authorization fails, please check the settings in Security. You can check whether the authorization was successful using the CoreLocation.authorizationStatus function. It displays the current authorization status. The following responses are possible.


MBS @ FMTraining.TV - FileMaker Monkeybread Plug-in Update 13.5

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.

We talk about the new MBS FileMaker Plugin 13.5 release: Announcement, release notes, new functions and download


MBS Plugin Advent calendar: 7 - Paths

Door 7 - Paths

Fact of the day
Did you know that you can easily copy the path of a file under Mac if you press the option key in the menu of the right mouse button at the same time? The menu will then show the entry as Copy...as pathname

Today it's all about how you can build paths in FileMaker with the help of the MBS FileMaker Plugin. We already got a little insight into this topic in the third door, where we created a path to a file on the desktop. The MBS FileMaker Plugin offers you some of these paths to special folders in your system. For example, you can use the Folders.UserDesktop function to determine the path to a user's desktop. Or you can determine the path to the temporary folder with Folders.UserTemporary. In this picture you can see the functions that are available for special folders.


MBS Xojo Plugins, version 23.6pr2

New in this prerelease of the 23.6 plugins: Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/ or from DropBox.
Or ask us to be added to our shared DropBox folder.

MBS FileMaker Plugin, version 13.6pr2

New in this prerelease of version 13.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in DropBox folder or ask for being added to the DropBox shared folder.

Two months until Claris Engage 2024

Just two months left until Claris Engage 2024, 6th to 8th February 2024 in Austin, Texas.

The Claris Engage conference will take place one day in the Apple Campus (6900 West Parmer Lane) for training and keynote. After the keynote, we'll meet each other at a party with food and drinks. Plenty of time to welcome old friends and talk about the keynote content. The other two days are on a different Apple Campus (5505 Parmer Lane). All the sessions will be there with lunches and refreshment breaks.

I hope to meet a lot of users of MBS FileMaker Plugin there, answer questions and have a great time!

Reducing the number of plugin parts for Xojo

For our next pre-release, we did a big change. We reduced the number of plugin parts from about 500 to now about 400. About a 20% reduction. This saves us some build times. We build each plugin part for 13 targets and thus building 5200 dylib/dll/so files is better than build 6500 ones.

How did we do this?

Well, we merged over 100 plugins parts together internally. For example if you build a Windows app using our Windows USB classes, we had several plugin parts. But it is quite likely you would refercence all the parts for Windows USB if you would write such an application. Since these three plugin parts had common code, merging them reduced the size of the total code. Often merging three parts makes the resulting plugin part smaller than 2 of them.

Old size of all 52 plugins was 879 MB and now is 832 MB, a 47 MB saving. You may check if your application become bigger or smaller as your milage may vary. Due to the reduced number of plugin libraries to load, the IDE needs about 20% less time to start.

Please let us know if you find issues with your projects. Everything should just work fine like before.

MBS Plugin Advent calendar: 6 - MongoDB

Door 6 - MongoDB

Fact of the day
MongoDB is the backend of Claris Studio, unfortunately you cannot use the advantages of MongoDB directly with Claris Studio, but MBS makes it possible.

Welcome to December 6th. Today is St. Nicholas Day and we also want to take part in filling the Christmas boot with our calendar. Today it contains MongoDB. The special thing about MongoDB is that it is not a relational database based on tables and relationships, but its data has a JSON-like structure. This allows you to perform queries that were previously not possible due to the restriction of relationships or table limits.

In a MongoDB database we can have several collections. These collections can in turn contain several documents. The documents can be compared with data records, with the difference that different documents in a collection do not have to share the same structure. For example, you can have data in one and the same collection that describes the data for an employee and for a warehouse item. So you can easily find out who is in your company longer: the carpet in the warehouse or your trainee.


Functions in JSON Query

Let us show you the built-in functions in JSON Query and how to use them in FileMaker with MBS FileMaker Plugin.



Returns the absolute value of a number.


Run abs() on a value in an array:


MBS( "JSON.Query"; "[-3]"; "abs($[0])")






Or find all values with an absolute value > 3, so we remove small values from the array:


MBS( "JSON.Query"; "[-3, 5, -6, 1]"; "$[?abs(@)> 3]")






Static Variables in Xojo

In Xojo variable declaration somewhere inside a piece of code, you can use the static keyword. Whether you are in an event handler, a menu handler, a method or a global function doesn't matter. Just swap your "var" or "dim" with a "static" and you get a global variable. Instead of allocating memory for the variable on the stack and thus loosing the value on the end of the current code block, the static variable will remember the value. You can easily use it as counter for how often a method is called or for a global dictionary to cache results.

Here is a sample for a method which counts how often it gets invoked:

Sub testCounter() Static counter As Integer counter = counter + 1 System.DebugLog CurrentMethodName+" called already "+counter.ToString+" times." End Sub

MBS Plugin Advent calendar: 5 - WindowsOCR

Door 5 - WindowsOCR

Fact of the day
If you want to program a cross-platform solution or need text recognition for older Windows versions, you can use functions of the Tesseract component from the MBS FileMaker Plugin.

In Door 2 we already introduced you to a way of performing text recognition under Mac. But this possibility is not only available for Mac in the MBS FileMaker Plugin, but the MBS FileMaker Plugin also makes it possible to use Windows' own OCR functions. These WindowsOCR functions are available under Windows 10 and 11.

You can test whether you can use the functions under an operating system by running the WindowsOCR.Available function. If you can use the functions, first create a new OCR engine with WindowsOCR.New. This function returns a reference number which you can use in other functions to address the OCR engine. In this function, you can also optionally specify which language is to be recognized by the engine. If you skip this parameter, the language, that you get back with the WindowsOCR.CurrentInputMethodLanguageTag function, is automatically used for language recognition. Which languages can be recognized depends on which languages are installed on your system. You can obtain a list of the languages that you can currently use in your system with WindowsOCR.AvailableRecognizerLanguages.


MBS Plugin Advent calendar: 4 - Speech

Door 4 - Speech

Fact of the day
A voice output can not only make reading easier, but also creates freedom for people with physical disabilities.

In this door, you have the opportunity to ensure that your solution never has to be at a loss for words again. Today we are teaching your application to speak, because MBS offers speech output for Windows, Mac and iOS with the Component Speech.

If we want to output a text, we can use the Speech.Speak function. We first pass the text to be read out in the parameters. That's enough for now. Optionally, we can also choose from various speakers. You can find out which speakers are available with the Speech.AvailableVoices function. This function provides you with a list of all speakers. You can specify in this function whether you want the speaker names or the ID for the speaker to be displayed in this list.

If you want to use a specific speaker in the Speech.Speak function, you need to enter the ID. In the Speech.Speak function, you can also set whether or not your script should be continued while the speech output is running. Stopping a script also makes sense if you call the Speech.Speak function in the script several times so that the text that follows is also read out and is not lost because another text is being read out. You can also set the volume and playback rate in the function. The volume is between 0.0 (silent) and 1.0 (full). The playback speed ranges between 0.0 (silent) and 2.0 (double speed). The default value for both settings is 1.0.


MBS Plugin Advent calendar: 3 - BinaryFile

Door 3 - Binary File

Fact of the day
You may also be interested in the Text component. Because you can also create a text file with this component.

Behind door 3 is a component that is mostly unseen, but is used in many applications by customers and has become essential. It is the BinaryFile component. You can use it to read binary data from a file and also write it to a file.

But what is it actually good for? Although the texts are saved as binary data, you can also create normal text files with this component and read them out again later. For example, you can create a log file yourself in which you can write information. We would like to do this now by logging in the file when a certain script has been called and what result it has. The aim is to have as less code as possible in the script that we want to log so that the script doesn't become confusing. For this reason, we use the Perform Script script step and call a script that writes the desired text to the log file. We pass the text that we want to write to the log file as a parameter. In this way, for example, the results that were calculated in the script can also be written to the file.


MBS Plugin Advent calendar: 2 - Vision

Door 2 - Vision

Fact of the day
The MBS FileMaker Plugin not only offers you the Apple Vision as a framework, using MapKit you can also integrate Apple maps into your application or take pictures with your iPhone via Continuty Camera and store them directly in FileMaker.

The second door provides something for Mac users. Apple provides a framework called Vision. With this framework you can recognize barcodes, recognize texts from images or classify images into categories with the help of machine learning, e.g. so that you can search for them in your image database. This framework makes MBS usable with the plugin for FileMaker.

Barcode recognition

Let's first look at the possibility of recognizing multiple barcodes on an image. You simply pass the image to the Vision.DetectBarcode function as a parameter and Vision then searches for the barcodes on the image and returns a JSON in which the barcodes are listed. If you only want to search for QR codes on the image, for example, you can restrict the barcode types in the search by specifying the desired types as parameters. You can find out which barcode types can be recognized with Vision on your computer using the Vision.SupportedSymbologies function.

Result from Vision.DetectBarcode

MBS Xojo Plugins, version 23.6pr1

New in this prerelease of the 23.6 plugins:
  • Updated DynaPDF to version
  • Updated SQLAPI to version 5.3.
  • Added FullyQualifiedFieldName property to DynaPDFFieldExMBS class.
  • Added karFormData and kaffNonPDFA_4e constants to DynaPDFMBS class.
  • Added Hidden attribute to JSONIteratorMBS, XMLIterateAttributeNodesMBS, XMLIterateChildNodesMBS, XMLIterateElementsMBS, DynaPDFIteratorMBS and PCRE2IteratorMBS classes to hide it from auto complete. Since you use it via for each loops indirectly, you never need to use these classes directly.
  • Changed CallDelegateOnMainThreadMBS delegates to be hidden for auto complete.
  • Fixed GetDelegateParametersMBS, GetDelegateTargetMBS and GetDelegateWeakMBS functions to work better in newer Xojo versions.
  • Fixed an endless loop in JSONMBS class when running Search function with a bad query. Now propergates the exception properly.
  • Fixed JSON, DynaPDF and plugin to compile again with Xojo 2019r1.
  • Added SortArrayMBS methods to sort with/without a delegate and ascending or descending.
  • Updated openssl library to version 3.1.4.
  • Optimized text handling to be faster, which affects various string functions like ContainsWholeWordMBS.
  • Added CopyArrayMBS methods to copy array data to second array of same type.
  • Added target flags to our delegates to make sure they are available on the right targets.
  • Updated to LCMS 2.16fc1.
  • Improved array access for the plugins.
  • Added checks for fillSeries and fillDateSeries in CDRanSeriesMBS class to better handle if arrays are nil.
  • Improved array conversion from Xojo array to JSONMBS array.
  • Fixed crash in NSIndexPathMBS when passing nil array to Constructor or indexPathWithIndexes method.
  • Improved NSSearchFieldControlMBS to scroll horizontally.
  • Added DynaPDFParserMBS class.
  • Fixed some flags for delegates to work better in the future.
  • Added cmsV2Unicode function to LCMS2ProfileMBS class.
  • Added Scrollable property to NSSearchFieldMBS class.
  • Added more properties to CURLEmailMBS class for debugger.
  • Updated SQLite to version 3.44.1.
  • Added ApplyMergePatch, ApplyPatch, MergePatchFromDiff, PatchFromDiff to JSONMBS class.
  • Fixed string parser in LargeNumberMBS to not break on a minus sign sometimes.
  • Added BigNumberConversionMBS class.
  • Added new GetStringValue and SetStringValue methods to BigNumberMBS class.
  • Added new GetStringValue and SetStringValue methods to LargeNumberMBS class with more options.
  • Fixed OpenMTInputFile method in CURLSMBS class to remove InputData first.
  • Fixed SetupAWS and SetupOAuth in CURLSMBS class to reset NoBody flag if new transfer is not head.
  • Implemented EOF and BOF for SQL Plugin for RowSets to make for-each loops work better, but AutoCache may need to be enabled if the database doesn't allow MoveFirst like SQLite.
  • Added isBOF and isEOF to SQLCommandMBS class.
  • Improved WindowsDeviceInformationPairingMBS class to keep reference to the device object.
  • Fixed a possible crash in SQLConnectionMBS destructor.
Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/ or from DropBox.
Or ask us to be added to our shared DropBox folder.

MBS FileMaker Plugin, version 13.6pr1

New in this prerelease of version 13.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in DropBox folder or ask for being added to the DropBox shared folder.

Older blog entries:

2023-12-01 MBS Plugin Advent calendar: 1 - Barcodes
2023-11-30 Send Audit Log via CURL in background
2023-11-29 News from the MBS Xojo Plugins Version 23.5
2023-11-28 New in MBS FileMaker Plugin 13.5
2023-11-28 Five months until MBS Xojo Developer Conference
2023-11-27 Data structures in MBS Plugin
2023-11-22 Black Friday coming soon
2023-11-22 MBS @ FMTraining.TV - FileMaker Monkeybread Plug-in Update 13.4
2023-11-21 WebView2 for Xojo upgrades
2023-11-20 MBS Function calls in blue
2023-11-19 Read and write notes in Contacts
2023-11-18 Embracing for each loops
2023-11-18 Format button for FileMaker
2023-11-16 FileMaker 2023, third release
2023-11-16 Check out the Snippets database example
2023-11-14 MBS FileMaker Plugin at EngageU 2023
2023-11-13 Early Black Friday Sale for Xojo
2023-11-13 MBS Booth ready for EngageU
2023-11-07 MBS Plugin 13.5 for Claris FileMaker
2023-11-07 MonkeyBread Software Releases the MBS Xojo Plugins in version 23.5


Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008
XML: RSS Feed XML: Atom Feed

Ausspannen vom Alltagsstress mit einer Waldführung oder einem Waldpäuschen mit der Waldmeisterin.