Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83 (MC830919); site haring.UUCP Path: utzoo!linus!decvax!mcvax!haring!jaap From: jaap@haring.UUCP (Jaap Akkerhuis) Newsgroups: net.micro Subject: Re: 1200 baud modem problems (And what is a break?) Message-ID: <147@haring.UUCP> Date: Tue, 17-Jan-84 22:09:13 EST Article-I.D.: haring.147 Posted: Tue Jan 17 22:09:13 1984 Date-Received: Wed, 18-Jan-84 06:31:01 EST References: <15422@sri-arpa.UUCP> Organization: CWI, Amsterdam Lines: 46 Yes, a break is not not a character, but a status of the transmitter and so, the receiver line of an RS-232 serial line interface. When there are no characters on the output, this line is kept in the MARK state. Which means, a voltage lower then -3.2 Volts. If a character is send, the line toggles between a this state, and the SPACE state (at least +1.2 Volts). A ``break'' is defined, as the line being a space longer then the character time, which is the time it takes to send out a character, stop start and parity bits included. For a 9600 baud line this will roughly be 1.04 ms (So the break will cause an framing error in the UART on the receiving side). A lot of (DEC-)interfaces (f.i. the DL-11) are capable of generating breaks, normally not supported in UNIX. But, as being pointed out already by some one, you can generate a break, by sending out a ^@ on a lower speed, which will be seen as a break on the receiving side. The character time of a 300 baud line is 33.3 ms, the ^@ is a SPACE during it's transmission. An plain @ will work just as fine, since it value is also most of a time a SPACE. Note that other character's will hardly work, since the bits could accidentally be interpret as stop bit, so the framing error will not show up and some garbage at the input will be the result. (Looking at the garbage makes our getty to recognise the speed, and will set the speed of the line to the one at the terminal. This is a nice feature, since all the terminals are not on fixed lines, but connected via a portselector) Generating a break on the lowest possible speed of the UART of course doesn't work this way, but you may then try to send extra stop bits, wrong parity, 6- or 8-bit character's etc in order to force an overrun error. The effect depends of course on the interpretation on the receiving side. Now the fun part: Some terminals are not capable of generating breaks on all the speeds they can handle. If the spec's say: speed 50 110 300 600 1200 2400 4800 9600 etc. and break 120 ms, it will for sure not generate a correct break for the 50 baud lines! Of course, if you have to use 50 baud, you have serious problems anyway, but still... Jaap Akkerhuis P.S The figures of the voltage levels can be wrong since I don't have the proper references by hand, but is's late all ready (at least here). You might want to look it up in f.i. the RS-232 standard.