Имеется тюнячий мозг управления двигателем, у него выходы соответственно tx rx gnd ну и вдобавок 12 и 5 вольт, все это дело хочу прицепить к Ардуинке Нано.

В теории COM порт вещает в следующем формате:

"MS2Extra comms333e2: MS2/Extra release 3.3.3 20141112 12:53GMT(c)KC/JSM/JB MS2"

"Capture Date: Fri Jul 10 09:36:02 FET 2015"

Time SecL RPM MAP Boost psi TPS AFR AFR2 MAT CLT Engine Batt V EGO cor1 EGO cor2 Fuel: Air cor Fuel: Warmup cor Fuel: Baro cor Fuel: Total cor Fuel: Accel enrich Accel PW VE1 PW DutyCycle1 VE2 PW2 DutyCycle2 SPK: Spark Advance SPK: Knock retard SPK: Cold advance SPK: External advance SPK: Base Spark Advance SPK: Idle Correction Advance SPK: MAT Retard SPK: Flex Advance SPK: Spark Table 1 SPK: Spark Table 2 SPK: Spark Table 3 SPK: Revlim Retard SPK: Nitrous Retard Dwell Barometer TPSdot MAPdot RPMdot Load Secondary Load Ign load Secondary Ign Load AFR Load EGT 6 temp EGT 7 temp ADC6 ADC7 gpioadc0 gpioadc1 gpioadc2 gpioadc3 gpioadc4 gpioadc5 gpioadc6 gpioadc7 status1 status2 status3 status4 status5 Timing Err% AFR Target 1 Lost Sync Count Lost Sync Reason InjTiming1 InjTiming2 PW3 PW4 VE Trim 1 VE Trim 2 VE Trim 3 VE Trim 4 Knock In On/Off Outputs Status Bits PORTs BDE PORTs AM PORT T Trip Economy Instant Economy Fuel Consumption Trip Meter Aerodynamic Drag Rolling Drag Accel Power Power Torque

s s RPM kPa % AFR AFR °C °C bit v % % % % % % % ms % ms % % ms % deg deg deg deg deg deg deg deg deg deg deg deg deg ms kPa %/s kPa/s rpm/sec kPa % kPa % kPa us % AFR deg deg ms ms % % % % % bit l/100Km l/100Km l/hr km HP HP HP HP lbft

66.561 168 1653 51.0 -7.0 2.2 14.40 14.40 44.3 90.9 1 14.7 96.0 96.0 92.3 100 100.0 92 100 0.000 40 2.058 2.8 40 2.058 2.8 25.3 0.0 0.0 0.0 25.3 0.0 0.0 0.0 25.3 0.0 0.0 0.0 0.0 3.00 99.5 0.0 -15.0 10 51.0 0.0 51.0 0.0 51.0 377 305 394 319 0 0 0 0 0 0 0 0 136 0 0 0 0 5.0 14.1 1 2 0.0 0.0 0.000 0.000 100.0 100.0 100.0 100.0 0.0 0 211 56 32 0.0 0.0 2.1 NaN 0.0 0.0 0.0 0.0 0.0

66.620 168 1650 50.8 -7.1 2.2 14.40 14.40 44.3 90.9 1 14.7 96.0 96.0 92.3 100 100.0 92 100 0.000 40 2.058 2.8 40 2.058 2.8 25.3 0.0 0.0 0.0 25.3 0.0 0.0 0.0 25.3 0.0 0.0 0.0 0.0 3.00 99.5 0.0 0.0 10 50.8 0.0 50.8 0.0 50.8 376 305 393 319 0 0 0 0 0 0 0 0 136 0 0 0 0 -0.2 14.1 1 2 0.0 0.0 0.000 0.000 100.0 100.0 100.0 100.0 0.0 0 211 56 33 0.0 0.0 2.1 0.0 0.0 0.0 0.0 0.0 0.0

66.649 168 1638 50.8 -7.1 2.2 14.40 14.40 44.3 90.9 1 14.7 96.0 96.0 92.3 100 100.0 92 100 0.000 40 2.051 2.8 40 2.051 2.8 25.4 0.0 0.0 0.0 25.4 0.0 0.0 0.0 25.4 0.0 0.0 0.0 0.0 3.00 99.5 0.0 0.0 -20 50.8 0.0 50.8 0.0 50.8 380 304 397 318 0 0 0 0 0 0 0 0 136 0 0 0 0 -0.3 14.1 1 2 0.0 0.0 0.000 0.000 100.0 100.0 100.0 100.0 0.0 0 211 24 1 0.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0
первые три сообщения это заголовки, мне же нужно просто вынуть цифровые значения, которые обновляются через некоторый промежуток времени.

Код:
Serial.begin(9600);
// считываем принятый байт:
Serial.readBytes((char*)data,256);
вот нашел команду на чтение, и сразу возникло 3 вопроса
1) как к строковой переменной обратиться в конкретную точку, скажем считать 5ую колонку
2) как поймать эту строку полностью, число 256 определяет длину строки?
3) и как начать чтение именно с начала строки, а не скажем с середины(если мы начали слушать порт во время вещания в него данных)