Difference between revisions of "FreeBSD Programming Tips"

From Free Pascal wiki
Jump to navigationJump to search
m (Tweaked templates)
(→‎FreeBSD Programming Tips: Added Programming Tips common info header material)
Line 3: Line 3:
  
 
= FreeBSD Programming Tips =
 
= FreeBSD Programming Tips =
 +
 +
==Other Interfaces==
 +
 +
{{Interfaces}}
 +
 +
===Platform specific Tips===
 +
 +
*[[Android Programming]] - For Android smartphones and tablets
 +
*[[iPhone/iPod development]] - About using Objective Pascal to develop iOS applications
 +
*[[FreeBSD Programming Tips]] - FreeBSD programming tips
 +
*[[Linux Programming Tips]] - How to execute particular programming tasks in Linux
 +
*[[OS X Programming Tips|macOS Programming Tips]] - Lazarus tips, useful tools, Unix commands, and more...
 +
*[[WinCE Programming Tips]] - Using the telephone API, sending SMSes, and more...
 +
*[[Windows Programming Tips]] - Desktop Windows programming tips
 +
 +
===Interfaces Development Articles===
 +
 +
*[[Adding a new interface]] - How to add a new widget set interface
 +
*[[Carbon interface internals]] - If you want to help improving the Carbon interface
 +
*[[Cocoa Internals]] - Some info about the inner workings of the Cocoa widget set
 +
*[[LCL Defines]] - Choosing the right options to recompile LCL
 +
*[[LCL Internals]] - Some info about the inner workings of the LCL
 +
*[[Windows CE Development Notes]] - For Pocket PC and Smartphones
  
 
== Making a Beep ==
 
== Making a Beep ==

Revision as of 10:40, 20 July 2019

English (en)

Light bulb  Note: Work in Progress

FreeBSD Programming Tips

Other Interfaces

Platform specific Tips

Interfaces Development Articles

Making a Beep

As SysUtils.Beep has no effect on FreeBSD, I looked around for a way to make a beep and found nothing useful. So, I reinvented the wheel as follows:

    {$IFDEF FREEBSD}
    procedure FBSDbeep;
    var
      BProcess: TProcess;
      begin
        BProcess:= TProcess.Create(nil);
        BProcess.CommandLine := 'sh -c "echo xxxxxxx > /dev/dsp"';
        BProcess.Execute;
        BProcess.Free;
      end;
    {$ENDIF}

Note: /dev/dsp will automatically reroute to the sound device's correct device node (eg /dev/dsp0.0) using the dynamic devfs(5) clone handler.

Qualifications

  • Ok, it's more of a burp than a beep, but it serves the purpose. If you're really fussy, you could send a real .wav file to /dev/dsp and play any musical note(s) you desire.
  • If FreeBSD is using a GENERIC kernel, it will work.
  • If FreeBSD is using a custom kernel and it's a desktop system, then it will most probably work because who doesn't want sound on their desktop system.
  • If FreeBSD is using a custom kernel and is running on a server, it may not work. I don't see this as a significant defect in user applications which is its use case for my purposes.

Using HTTPS

Placeholder. Content to come.