I actually found I could use the LazSynaSer unit directly. However, this has a major bug in it which causes the application to hang in macOS. It also does it if you use TLazSerial (as this is just a wrapper). It is caused by the creation of the lock file. It is hard coded to create a directory, then files in that directory, in '/var/lock' but the system disallows the creation of anything in the '/var' directory without admin password. So, in LazSynaSer (the one in the TLazSerial download), I have made the following edits:
Line 128:
//LockfileDirectory = '/var/lock'; {HGJ}
(i.e., just comment out the line)
Add at the bottom of that const block (line 172):
var LockfileDirectory:String;
Then, what is now line 2224, remove the extra backslash:
result := LockfileDirectory + 'LCK..' + s;
and in the cpomComportAccessible function, add after the 'begin':
LockfileDirectory:=GetTempDir;
This then ensures that the lock file is created in the temporary files location which doesn't need admin permission to access. I believe that this only affects Linux and macOS.
I haven't used it in anger yet, so it sends data but nothing comes back (as nothing is currently connected). That might happen tomorrow.
Can anyone else confirm that they experience the same issue with macOS?