![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			
			
			 Гуру 
			![]() Регистрация: 20.01.2010 
				
				Возраст: 44 
				
Город: Владивосток 
Регион: 25 
Машина: Subaru Impreza GF/GG 
					Сообщений: 1,064
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Плата: фридуино на 168й меге. 
		
	
		
		
		
		
			Пишу программку общения с ком-портом. Суть - в порт передаются команды типа ATS12345 Программка их парсит побайтно и в зависимости от команды выполняет те или иные действия. Уперся я о непонятный камень: код работает нестабильно. в монитор порта вбиваю ATS в 50% случаев (примерно) код доходит до выполнения Serial.println("SET COMMAND /PIN "); НО(!!!!) Стабильно в цикле забивания массива выводит именно те байты, что передавались. Но if и switch работают по-китайски. И еще нюанс такой: Serial.print как-то больше способствует корректной работе кода с массивом. В чем может быть трабл? Уже идей никаких нет. PHP код: 
	
			
	
				__________________ 
		
		
		
		
	
	Subaru Impreza GF H6 BMW Style PROJECT : - постройка. Было: 2литра / PIII-650/SSD32GB/9.5"/SB X-FI/GPS/3G/OBD2/... Строю: 3литра / I5-MOBILE/500/12"/SB X-FI/GPS/3G/OBD2/... pccar Drive2 ----- Impreza Lite: Allwinner A13 (DNS E76) - Cortex A8 1GHz http://www.pccar.ru/showthread.php?t=18574  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			
			
			 Гуру 
			![]() Регистрация: 17.03.2008 
				
				Возраст: 46 
				
Город: Новокузнецк 
Регион: 42 
Машина: 2003\Lexus\RX330 
					Сообщений: 1,192
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 ваще seral.println Никогда не использовал. только serial.print. 
		
	
		
		
		
		
		
	
	и еще. массив cmd[i] очищается если ни одно из условий не выполняется или нет? может жестко проверять при приеме данных из порта по маске команды и как только расхождение обнаружилось сразу массив очищать.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			
			
			 Гуру 
			![]() Регистрация: 17.03.2008 
				
				Возраст: 46 
				
Город: Новокузнецк 
Регион: 42 
Машина: 2003\Lexus\RX330 
					Сообщений: 1,192
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 и еще. про serial.flush после каждого приема верной комманды не помешает вроде. Хотя тут я хз. вроде не надо. 
		
	
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#4 | ||
| 
			
			
			
			 Гуру 
			![]() Регистрация: 20.01.2010 
				
				Возраст: 44 
				
Город: Владивосток 
Регион: 25 
Машина: Subaru Impreza GF/GG 
					Сообщений: 1,064
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 так что обработка ИНАЧЕ смысла пока не имеет. вот результат нескольких подряд вбитых "ATS1234": Цитата: 
	
 с ним вообще работает криво.... 
				__________________ 
		
		
		
		
	
	Subaru Impreza GF H6 BMW Style PROJECT : - постройка. Было: 2литра / PIII-650/SSD32GB/9.5"/SB X-FI/GPS/3G/OBD2/... Строю: 3литра / I5-MOBILE/500/12"/SB X-FI/GPS/3G/OBD2/... pccar Drive2 ----- Impreza Lite: Allwinner A13 (DNS E76) - Cortex A8 1GHz http://www.pccar.ru/showthread.php?t=18574  | 
||
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			
			
			 Гуру 
			![]() Регистрация: 17.03.2008 
				
				Возраст: 46 
				
Город: Новокузнецк 
Регион: 42 
Машина: 2003\Lexus\RX330 
					Сообщений: 1,192
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 выберете жестко формат комманды AT xxxxx <cr>  
		
	
		
		
		
		
		
	
	и по этой маске команды парсите. как только у вас расхождение команды с маской буфер очищаете и ничего в него не пишете пока первый символ "A" не появится. С этого момента начинаете писать в буфер и снова сличать с маской.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#6 | ||
| 
			
			
			
			 Гуру 
			![]() Регистрация: 20.01.2010 
				
				Возраст: 44 
				
Город: Владивосток 
Регион: 25 
Машина: Subaru Impreza GF/GG 
					Сообщений: 1,064
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 Цитата: 
	
 Результат работы кода - разный. Код элементарный - читаем байты с порта, пока есть данные, забиваем их в массив и далее смотрим, если первые два AT, то смотрим дальше. Вот это условие при одинаковых входных данных срабатывает не всегда. И Switch-case тоже срабатывает не всегда, при одинаковых входных данных. Вопрос - почему такое может быть? 
				__________________ 
		
		
		
		
	
	Subaru Impreza GF H6 BMW Style PROJECT : - постройка. Было: 2литра / PIII-650/SSD32GB/9.5"/SB X-FI/GPS/3G/OBD2/... Строю: 3литра / I5-MOBILE/500/12"/SB X-FI/GPS/3G/OBD2/... pccar Drive2 ----- Impreza Lite: Allwinner A13 (DNS E76) - Cortex A8 1GHz http://www.pccar.ru/showthread.php?t=18574  | 
||
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#7 | 
| 
			
			
			
			 Гуру 
			![]() Регистрация: 17.03.2008 
				
				Возраст: 46 
				
Город: Новокузнецк 
Регион: 42 
Машина: 2003\Lexus\RX330 
					Сообщений: 1,192
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 а что мешает вам добавить немного обратной связи? выводите ваш буфер обратно (с целью отладки), будете знать что там у вас лежит. 
		
	
		
		
		
		
		
	
	и я бы посоветовал комманду заканчивать <cr> (ентер грубо говоря).  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#8 | 
| 
			
			
			
			 Гуру 
			![]() Регистрация: 20.01.2010 
				
				Возраст: 44 
				
Город: Владивосток 
Регион: 25 
Машина: Subaru Impreza GF/GG 
					Сообщений: 1,064
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Вы код программы читали? Складывается такое впечатление, что вместо помощи, Вы издеваетесь. 
		
	
		
		
		
		
			
				__________________ 
		
		
		
		
	
	Subaru Impreza GF H6 BMW Style PROJECT : - постройка. Было: 2литра / PIII-650/SSD32GB/9.5"/SB X-FI/GPS/3G/OBD2/... Строю: 3литра / I5-MOBILE/500/12"/SB X-FI/GPS/3G/OBD2/... pccar Drive2 ----- Impreza Lite: Allwinner A13 (DNS E76) - Cortex A8 1GHz http://www.pccar.ru/showthread.php?t=18574  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#9 | 
| 
			
			
			
			 Гуру 
			![]() Регистрация: 17.03.2008 
				
				Возраст: 46 
				
Город: Новокузнецк 
Регион: 42 
Машина: 2003\Lexus\RX330 
					Сообщений: 1,192
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 да и не думал вообще-то. Подскажите вот у вас в программе: 
		
	
		
		
		
		
		
	
	((cmd[0]==65)and(cmd[1]==84)) я правильно понимаю что начало команды вы хотите увидеть обязательно в первом элементе массива?  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#10 | |
| 
			
			
			
			 Гуру 
			![]() Регистрация: 20.01.2010 
				
				Возраст: 44 
				
Город: Владивосток 
Регион: 25 
Машина: Subaru Impreza GF/GG 
					Сообщений: 1,064
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 потому что это и предполагается. вот когда это условие срабатывает - необязательно срабатывает следующее условие проверки элементов массива, будто он где-то повреждается. 
				__________________ 
		
		
		
		
	
	Subaru Impreza GF H6 BMW Style PROJECT : - постройка. Было: 2литра / PIII-650/SSD32GB/9.5"/SB X-FI/GPS/3G/OBD2/... Строю: 3литра / I5-MOBILE/500/12"/SB X-FI/GPS/3G/OBD2/... pccar Drive2 ----- Impreza Lite: Allwinner A13 (DNS E76) - Cortex A8 1GHz http://www.pccar.ru/showthread.php?t=18574  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
![]()  | 
	
	
		
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
		
  | 
	
		 |