SerialPort.SetDataAvailableEvaluate
-----------------------------------

Sets the data available expression for this serial port.

| Component | Version | macOS | Windows | Linux | Server | iOS SDK |
|---|---|---|---|---|---|---|
| [SerialPort](component_SerialPort.md) | [6.2](newinversion62.md) | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes, on macOS and Windows | ❌ No |

MBS( "SerialPort.SetDataAvailableEvaluate"; PortReference; Expression ) 

**MBS**( **"SerialPort.SetDataAvailableEvaluate";** /\* Sets the data available expression for this serial port. \*/  
**$PortReference**; /\* The reference number of the port. You get this number from [SerialPort.Open](SerialPortOpen.md) when you open the port.e.g. $port \*/   
**$Expression**) /\* The expression to evaluate.e.g. "Let ( $$Done = 1 ; 1 )" \*/ 

### Parameters

| Parameter | Description | Example |
|---|---|---|
| PortReference | The reference number of the port. You get this number from [SerialPort.Open](SerialPortOpen.md) when you open the port. | $port |
| Expression | The expression to evaluate. | "Let ( $$Done = 1 ; 1 )" |

### Result

Returns OK or error.

### Description

Sets the data available expression for this serial port.  
When new data arrives, this expression is evaluated, so you can call [SerialPort.Read](SerialPortRead.md) functions.  
Be aware that script may be called when just a few bytes are in the read buffer. So the data message you wait for may only be available partly. In that case, please read available bytes, check if whole packet/message arrived and if not, store read data for later and wait for next evaluation.  
  
In the expression the text $$ID$$ will be replaced when evaluated with the serial port reference, so you can pass it to other functions if needed.  
### Examples

Run script with 2 second delay:

 MBS ( "SerialPort.SetDataAvailableEvaluate"; $$Port ;   
 "MBS (\\"[FM.RunScriptLater](FMRunScriptLater.md)\\"; 2; Get(FileName); \\"CheckSerial\\")")  
### See also

- [FM.RunScript](FMRunScript.md)
- [FM.RunScriptLater](FMRunScriptLater.md)
- [PortMidi.SetDataAvailableEvaluate](PortMidiSetDataAvailableEvaluate.md)
- [SerialPort.Open](SerialPortOpen.md)
- [SerialPort.Read](SerialPortRead.md)
- [SerialPort.SetDataAvailableHandler](SerialPortSetDataAvailableHandler.md)
- [Shell.SetDataAvailableEvaluate](ShellSetDataAvailableEvaluate.md)
- [Socket.SetDataAvailableEvaluate](SocketSetDataAvailableEvaluate.md)

### Blog Entries

- [MBS FileMaker Plugin, version 6.2pr2](https://www.mbsplugins.de/archive/2016-03-29/MBS_FileMaker_Plugin_version_6/monkeybreadsoftware_blog_filemaker)

This function checks for a license.

Created 29th March 2016 , last changed 16th January 2025

  
[SerialPort.SetDTR](SerialPortSetDTR.md) - [SerialPort.SetDataAvailableHandler](SerialPortSetDataAvailableHandler.md)

[HTML Version](SerialPortSetDataAvailableEvaluate.shtml)