Hayes command set is a specific programming language originally developed for the Hayes Smartmodem 300 baud modem during the late 1970s. The language is named after inventor Dennis Hayes, who designed his first so-called smartmodem in 1977. The original smartmodem combined a dialer along with standard communications capabilities so that the device could place, manage, and terminate phone calls, as well as use the telephone for data communications.
To handle dialing and call management as well as data communication, the modem must be designed to operate either in command mode or as a data modem. In command mode, data is interpreted as instructions that the modem should implement. In data modem mode, incoming data is communicated to the modem interface and outgoing data is communicated over the telephone to the modem at the other end.
The Hayes command set defined a special escape sequence to switch from command mode to data mode, and back again, along with a set of strings to tell the modem what to do when it operates in command mode. As modems increased in speed from 300 to 1200 baud, then to 2400 baud and beyond, the Hayes command set was extended and expanded to serve as a widely-employed set of modem commands and controls that remains in use to this very day (US Robotics has a similar command set, that also survives into the present as well).