As the comments to your question say, you need to find out a suitable capacitor value.  You can then see what the valley voltage of your ripple is, add in the voltage drop caused by the rectifier diodes, then arrive at the MINIMUM transformer secondary voltage.  You will then select the next highest available transformer secondary voltage, re-do all of the calculations, and finally find out how much heat that you need to get rid of.

Note that you need to design for the minimum available AC Mains voltage available when choosing the minimum secondary voltage.  You need to design for the MAXIMUM  AC Mains voltage when calculating how much heat will be generated.

Engineering is all about trade-offs.  If the available transformer secondary voltage is higher than you like, you can choose a smaller reservoir capacitor such that the worst-case ripple valley voltage is still above the regulator drop-out voltage.  This extra ripple translates into less heat wasted in the regulator.

Do note that you must NOT allow the ripple valley voltage to drop below the regulator drop-out voltage or the resulting regulated DC supply will have AC Mains ripple present in the output.  That can cause all manner of problems, especially in audio circuits.

Finally, pay attention to the ripple current rating of the reservoir capacitor when choosing a suitable part.  Note that the peak ripple current is substantially higher than the DC current output of the supply - the capacitor has to charge in only a small portion of the incoming AC sine-wave waveform.

D.C power supplies, regulated linear power supply question
In my ongoing quest to interface with some legacy equipment, I've discovered that the vendor supplied software sets the special characters to:

00 00 00 00 11 13 


But the SerialPort class of .NET set them to:

1A 00 00 1A 11 13 


I suppose that I have two questions:


What do these bytes mean?
How can I tell SerialPort to use a specific set of special characters?


The latter is all I really care about, but I suspect the former is going to be useful to know.



Update: The following doesn't work:

byte[] specialchars = {
    0x00,
    0x00,
    0x00,
    0x00,
    0x11,
    0x13
};

this.port.NewLine = System.Text.Encoding.ASCII.GetString(specialchars);




Update 2: As requested, here are Portmon logs for the vendor supplied app (filtered to remove the many thousands of IOCTL_SERIAL_GET_COMMSTATUS entries) and for my attempt to match even the first exchange.
